Tags Embutidas nos Templates - Django
O Django disponibiliza uma ampla gama de tags embutidas para templates, facilitando a renderização e manipulação de dados no frontend. A seguir, detalham-se as principais funcionalidades e usos dessas tags.
Tag autoescape
A tag autoescape
é convertido em<
<
é convertido em&
>
Aspas simples
tornam-se'
'
Aspas duplas
tornam-se"
"
é convertido em&
&
Considere o seguinte exemplo de template:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Exemplo Django</title>
</head>
<body>
{{ body }}
{% autoescape off %}
{{ body }}
{% endautoescape %}
</body>
</html>
No exemplo acima, o conteúdo da variável body
{% autoescape off %}
A função de view que utiliza esse template poderia ser definida assim:
from django.shortcuts import render
def index(request):
return render(request, "index.html", context={"body": "<h1>Hello World!</h1>"})
Quando renderizado, o primeiro bloco body
body
Comentários
Em templates, a tag comment
{% comment %}
{% endcomment %}
<body>
{% comment %}
Este texto será ignorado no HTML criado.
{% endcomment %}
{{ body }}
</body>
Isso é útil para adicionar notas ou comentários ao código sem que eles sejam exibidos no navegador.
Condicionais (if, else e elif)
A tag if
{% if n > 0 %}
<p>O número é positivo</p>
{% endif %}
Caso n
else
elif
{% if n > 0 %}
<p>O número é positivo</p>
{% elif n < 0 %}
<p>O número é negativo</p>
{% else %}
<p>O número é zero</p>
{% endif %}
Além disso, a tag suporta operadores como ==
!=
<
>
<=
>=
in
not in
is
is not
and
or
not
{% if n > 0 and n < 10 %}
<p>O número está entre 0 e 10</p>
{% endif %}
Loops (for)
A tag for
from django.shortcuts import render
def index(request):
langs = ["Python", "JavaScript", "Java", "C#", "C++"]
return render(request, "index.html", context={"langs": langs})
No template, os itens da lista podem ser iterados e exibidos:
<ul>
{% for lang in langs %}
<li>{{ lang }}</li>
{% endfor %}
</ul>
Se a coleção for vazia, a tag {% empty %}
<ul>
{% for lang in langs %}
<li>{{ lang }}</li>
{% empty %}
<li>Não há linguagens disponíveis</li>
{% endfor %}
</ul>
Dicionários também podem ser iterados utilizando uma sintaxe semelhante:
from django.shortcuts import render
def index(request):
data = {"red": "vermelho", "green": "verde", "blue": "azul"}
return render(request, "index.html", context={"data": data})
Template:
{% for key, value in data.items %}
<p>{{ key }}: {{ value }}</p>
{% endfor %}
Definição de Variáveis
A tag {% with %}
{% with name="Tom" age=25 %}
<div>
<p>Nome: {{ name }}</p>
<p>Idade: {{ age }}</p>
</div>
{% endwith %}
Exibição de Datas
A tag {% now %}
: ano completo (quatro dígitos)Y
: nome completo do mêsF
: dia do mêsj
Todos os formatos disponíveis podem ser encontrados na documentação oficial do Django.
Exemplo no template:
<p>{% now "Y" %}</p>
<p>{% now "F j, Y" %}</p>
Por padrão, o Django utiliza o fuso horário definido na variável TIME_ZONE
settings.py
TIME_ZONE = 'America/Sao_Paulo'