Criação e Uso de Templates - Django
Os templates em Django são responsáveis por definir a apresentação de uma aplicação, permitindo incorporar dados diretamente no código HTML por meio de um sistema de sintaxe especializado. Este artigo aborda como configurar e utilizar templates em um projeto Django.
Imagine um projeto chamado programicio que contém uma única aplicação chamada hello
settings.py
TEMPLATES
A variável TEMPLATES
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Configurações da variável TEMPLATES
: Especifica a template engine utilizada. O valor padrão éBACKEND
, que é nativo do Django.django.template.backends.django.DjangoTemplates
: Lista os diretórios onde o Django procurará por arquivos de template. Inicialmente, este valor é um array vazio.DIRS
: Define se os templates serão procurados dentro da pastaAPP_DIRS
de cada aplicativo. O valor padrão étemplates
.True
: Contém configurações adicionais, como os processadores de contexto, que facilitam o acesso a dados úteis dentro dos templates.OPTIONS
Essa configuração padrão já está preparada para encontrar templates dentro das pastas templates
templates
hello
index.html
A estrutura básica do aplicação hello
hello/ |-- migrations/ |-- templates/ | |-- index.html |-- __init__.py |-- admin.py |-- apps.py |-- models.py |-- tests.py |-- views.py
No arquivo index.html
<!DOCTYPE html>
<html>
<head>
<title>Django no www.programicio.com</title>
<meta charset="utf-8" />
</head>
<body>
<h2>Hello www.programicio.com</h2>
</body>
</html>
No arquivo views.py
from django.shortcuts import render
def index(request):
return render(request, "index.html")
A função render
request
templates
No arquivo urls.py
index
from django.urls import path
from hello import views
urlpatterns = [
path("", views.index),
]
Após essas configurações, ao acessar a URL raiz da aplicação, o template index.html
Trabalhando com Vários Templates
Para adicionar novos templates, como about.html
contact.html
templates
hello/ |-- migrations/ |-- templates/ | |-- index.html | |-- about.html | |-- contact.html |-- __init__.py |-- admin.py |-- apps.py |-- models.py |-- tests.py |-- views.py
Em views.py
from django.shortcuts import render
def index(request):
return render(request, "index.html")
def about(request):
return render(request, "about.html")
def contact(request):
return render(request, "contact.html")
No arquivo urls.py
urlpatterns = [
path("", views.index),
path("about/", views.about),
path("contact/", views.contact),
]
Agora, as páginas about.html
contact.html
/about/
/contact/
Usando TemplateResponse
Além da função render
TemplateResponse
TemplateResponse
from django.template.response import TemplateResponse
def index(request):
return TemplateResponse(request, "index.html")
O resultado será o mesmo de render