Criando um Blog Simples com Flask e Django em Python

Se você já começou a explorar o desenvolvimento web com Python, certamente ouviu falar dos frameworks Flask e Django.

Ambos permitem criar sites completos, mas cada um tem sua filosofia:

  • Flask é minimalista e flexível (você adiciona apenas o que precisar).

  • Django é completo e estruturado (traz tudo pronto: autenticação, ORM, templates, etc).

Neste artigo, vamos mostrar como criar um blog simples com cada um deles, comparando suas abordagens.



🔹 O que é um Blog no contexto do projeto?

Nosso blog terá funcionalidades básicas:
✔ Página inicial listando posts.
✔ Página individual para cada post.
✔ Estrutura simples para adicionar novos conteúdos.

Não será ainda um sistema completo com painel de administração, mas uma base sólida para expandir.


Criando um Blog Simples com Flask

1. Instalação do Flask

Crie um ambiente virtual e instale o Flask:

python -m venv venv
source venv/bin/activate  # Linux/Mac
venv\Scripts\activate     # Windows

pip install flask

2. Estrutura inicial do projeto

blog_flask/
│── app.py
│── templates/
│    ├── index.html
│    ├── post.html

3. Código base do app.py

from flask import Flask, render_template

app = Flask(__name__)

# Posts simulados em uma lista (poderia vir de banco de dados)
posts = [
    {"id": 1, "titulo": "Meu Primeiro Post", "conteudo": "Este é o conteúdo do primeiro post."},
    {"id": 2, "titulo": "Aprendendo Flask", "conteudo": "Flask é ótimo para começar no desenvolvimento web."}
]

@app.route("/")
def home():
    return render_template("index.html", posts=posts)

@app.route("/post/<int:id>")
def post(id):
    post_encontrado = next((p for p in posts if p["id"] == id), None)
    if post_encontrado:
        return render_template("post.html", post=post_encontrado)
    return "Post não encontrado", 404

if __name__ == "__main__":
    app.run(debug=True)

4. Template index.html

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Blog com Flask</title>
</head>
<body>
    <h1>📖 Meu Blog com Flask</h1>
    <ul>
        {% for post in posts %}
            <li>
                <a href="/post/{{ post.id }}">{{ post.titulo }}</a>
            </li>
        {% endfor %}
    </ul>
</body>
</html>

5. Template post.html

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>{{ post.titulo }}</title>
</head>
<body>
    <h1>{{ post.titulo }}</h1>
    <p>{{ post.conteudo }}</p>
    <a href="/">Voltar</a>
</body>
</html>

➡️ Agora você já tem um mini-blog com Flask rodando!


Criando um Blog Simples com Django

O Django já traz uma estrutura mais robusta, incluindo ORM, administração e separação de apps.


1. Instalação

pip install django
django-admin startproject blog_django
cd blog_django
python manage.py startapp posts

2. Estrutura do projeto

blog_django/
│── blog_django/
│    ├── settings.py
│    ├── urls.py
│── posts/
│    ├── models.py
│    ├── views.py
│    ├── urls.py
│    ├── templates/
│         ├── index.html
│         ├── post.html

3. Definindo o modelo do Post (models.py)

from django.db import models

class Post(models.Model):
    titulo = models.CharField(max_length=200)
    conteudo = models.TextField()

    def __str__(self):
        return self.titulo

Crie o banco de dados:

python manage.py makemigrations
python manage.py migrate

4. Criando o Admin

No posts/admin.py:

from django.contrib import admin
from .models import Post

admin.site.register(Post)

Crie um superusuário:

python manage.py createsuperuser

Agora você pode adicionar posts pelo painel /admin/.


5. Views e URLs

posts/views.py:

from django.shortcuts import render, get_object_or_404
from .models import Post

def index(request):
    posts = Post.objects.all()
    return render(request, "index.html", {"posts": posts})

def post(request, id):
    post = get_object_or_404(Post, id=id)
    return render(request, "post.html", {"post": post})

posts/urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("post/<int:id>/", views.post, name="post"),
]

Inclua em blog_django/urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("", include("posts.urls")),
]

6. Templates

templates/index.html:

<h1>📖 Meu Blog com Django</h1>
<ul>
    {% for post in posts %}
        <li><a href="/post/{{ post.id }}/">{{ post.titulo }}</a></li>
    {% endfor %}
</ul>

templates/post.html:

<h1>{{ post.titulo }}</h1>
<p>{{ post.conteudo }}</p>
<a href="/">Voltar</a>

➡️ Pronto: agora você tem um blog com Django, gerenciado pelo painel de administração.


Flask vs Django – Qual escolher?

CaracterísticaFlask 🟢Django 🔵
FilosofiaMinimalistaCompleto e estruturado
Curva de aprendizadoMais simplesMais robusta
Banco de dadosOpcionalORM integrado
Painel de administraçãoPrecisa criarJá vem pronto
FlexibilidadeAltaMais "opiniado"
Projetos ideaisProtótipos, APIs, apps pequenosBlogs, e-commerces, apps complexos

Conclusão

Criar um blog com Python é um ótimo exercício para aprender desenvolvimento web.

  • Com Flask, você entende melhor os fundamentos, porque constrói praticamente tudo manualmente.

  • Com Django, você tem mais produtividade e estrutura, especialmente em projetos maiores.

💡 Dica: Se você está começando, teste primeiro o Flask para entender os conceitos. Depois, avance para o Django para criar aplicações maiores e mais complexas.

Comentários

Postagens mais visitadas deste blog

Manipulação de Arquivos no C#: Como Ler, Escrever e Trabalhar com Arquivos de Forma Simples

Laços de Repetição em Python: Conceitos e Exemplos Práticos

Gerando Relatórios em PDF com Python (ReportLab e FPDF)