Por Luferat em 29/10/2026
Manter todas as views em um único arquivo não é boa prática. Se considerarmos que, para cada página / rota, teremos uma função view, no final esse arquivo será muito grande e de difícil manutenção. O Django permite a conversão de views.py em uma pasta 📂views com as views em arquivos separados, facilitando muito a manutenção.
Ajuste a estrutura do aplicativo blog para:
blog/
├── views/ ← Crie a pasta views
│ ├── __init__.py ← Crie o arquivo __init__.py
│ └── home.py ← Crie o arquivo da view da rota 'home'
├── models.py
├── urls.py
├── views.py ← Apague o arquivo `views.py`
└── ...
Apague o blog/views.py original. Se ele continuar existindo ao lado da pasta views/, o Python vai ter um conflito de nomes, e a pasta (pacote) tem prioridade sobre o módulo, então o arquivo antigo simplesmente fica ignorado e confunde.
Coloque a view em um módulo dentro da pasta. Abra blog/views/home.py e adicione o conteúdo:
from django.http import HttpResponse
def home(request):
return HttpResponse('Olá, Django!')
Importe no __init__.py. Abra blog/views/__init__.py e adicione:
from .home import home
Com isso, o resto do projeto continua funcionando como antes, porque from blog import views e views.home seguem existindo. Seu blog/urls.py não precisa mudar, continua sendo:
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
Cada módulo novo ganha uma linha no __init__.py, teremos algo como:
from .home import home
from .posts import post_list, post_detail
from .auth import login_view, logout_view
O exemplo acima é só um exemplo! Não faça isso ainda ou terá um erro grave!
Verifique se o aplicativo ainda roda, se não, comande no terminal do VSCode:
python manage.py runserver
No navegador padrão, acesse http://localhost:8000 conferindo se tudo ainda funciona!
Como segmentar as views? Clique aqui!