Veja nesse artigo como criar um Blog com Django, um framework web baseado em Python que pode ser usado para desenvolver quaisquer tipos de apps web.
Em poucos passos conseguiremos utilizar a interface de linha de comando para criar projetos, customizá-los e desenvolver suas primeiras aplicações usando o Django. Aqui trataremos de entender o framework e criar o esqueleto inicial do microblog com o nosso template, integrações,
Vamos instalar o Django-Admin e uma Biblioteca de processamento de imagem
pip install Django
pip install pillow
Criando um Projeto com Django-Admin
django-admin startproject Blog
Criando um App
python manage.py startapp app
Adicionar no inicio de settings.py
import os
Logo apos vamos adicionar o app no settings.py na INSTALLED_APPS
'app'
Modificando o Idioma para Português
LANGUAGE_CODE = 'pt-BR'
Adicionar no Final de settings.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_DIRS = (
os.path.join( BASE_DIR, 'static' ),
)
Rodando Pela Primeira Vez o Django
python manage.py runserver
Acessar o Localhost:
http://localhost:8000
Criando um Usuario no Django-Admin
python3 manage.py migrate
python3 manage.py createsuperuser
Criando um Models
Adicionar no arquivo no models.py
class Post(models.Model):
imagem = models.ImageField(null=True, blank=True, upload_to="image/")
titulo = models.CharField(max_length=150)
subtitulo = models.CharField(max_length=150)
autor = models.CharField(max_length=150)
texto = models.TextField()
create_data = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.titulo
Logo Apos:
python3 manage.py makemigrations
python3 manage.py migrate
Adicionando o Models no Django-Admin no arquivo admin.py
from app.models import Post
admin.site.register(Post)
Adcionando o Models no view.py
from app.models import Post
def home(request):
data = {}
data['db'] = Post.objects.all()
return render(request,'home.html', data)
Importando a Views no urls.py
from app.views import home
path('',home,name='home'),
Criando a Pasta templates dentro da pasta app
logo apos criar um html na pasta templates
home.html
Colocar dentro do home.html
<style>
*{text-decoration: none;}
.flexbox{margin: 0 auto;display: flex;flex-wrap: wrap;width: 95%;margin: auto;text-align: center;}
.flex {flex-grow: 1;flex-shrink: 1;flex-basis: 80px;margin: 10px;height: 250px;}
.flex-img{width: 250px;height: 150px;object-fit: cover;}
.flex-post{font-size: 20px;color: black;}
.flex-text{color: black;}
</style>
<div class="flexbox">
{% for dbs in db %}
<div class="flex">
<a href="/post/{{dbs.id}}/">
<img class="flex-img" src="/media/{{ dbs.imagem }}">
<p class="flex-post">{{ dbs.titulo }}</p>
<p class="flex-post">{{ dbs.autor }}</p>
<p class="flex-post">{{ dbs.create_data }}</p>
</a>
</div>
{% endfor %}
</div>
Criando uma nova views
def post(request, pk):
data = {}
data['db'] = Post.objects.get(pk=pk)
return render(request, 'view.html', data)
Adcionando no urls.py
from app.views import post
from django.conf import settings
from django.conf.urls.static import static
path('post/<int:pk>/',post,name='post'),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Criando um html view.html na pasta Templates
view.html
<style>
.conteiner{width: 60%;margin: auto;}
.conteiner-img{width: 300px;}
.conteiner-title{font-size: 30px;margin-top: 40px;}
</style>
<div class="conteiner" >
<img class="conteiner-img" src="/media/{{ db.imagem }}">
<p class="conteiner-title">{{ db.titulo }}</p>
<p>{{ db.subtitulo}}</p>
<p>Autor: {{ db.autor}} {{ db.create_data}}</p>
<p>{{ db.texto }}</p>
</div>
Customizando o Admin do Django com Miniatura de Imagem
Adcionar no models.py
from django.utils.html import mark_safe
Adcionar dentro da Classe Post do models.py
@property
def imagem_preview(self):
if self.imagem:
return mark_safe('<img src="{}" width="60" height="60"/>'.format(self.imagem.url))
return ""
Adcionar dentro do admin.py
class itenlista(admin.ModelAdmin):
list_display = ('titulo' ,'preview')
def preview(self, obj):
return obj.imagem_preview
admin.site.register(Post ,itenlista)
Agora é so entrar no Admin do Django e fazer a primeira Postagem
http://localhost:8000/admin