Construindo um Blog com Django

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

Comentários:

Deixe seu Comentario:
Confira outros conteúdos:
Comandos SQL no PostgreSQL

Comandos SQL no PostgreSQL

Comandos Essenciais no SQL

Comandos Essenciais no SQL

Como se conectar ao banco de dados com PHP e PDO

Como se conectar ao banco de dados com PHP e PDO

Sistema de Login com PHP e Mysql

Sistema de Login com PHP e Mysql

Utilizando variáveis CSS

Utilizando variáveis CSS