Filtros Embutidos nos Templates no Django
No Django, existem filtros que permitem realizar transformações simples nos valores diretamente nos templates. A seguir são apresentados alguns dos filtros mais comuns.
add
O filtro add soma um valor a outro. Exemplo:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Django</title>
</head>
<body>
<div>
{% with message="Hello" %}
<h2>{{ message|add:" Django" }}</h2>
{% endwith %}
</div>
</body>
</html>Neste caso, a variável message contém o valor "Hello". No momento da renderização, o filtro add adiciona a string " Django", resultando em Hello Django. Essa variável também poderia ser um dado recebido do contexto da view.

capfirst
O filtro capfirst transforma a primeira letra de uma string em maiúscula.
{{ message|capfirst }}Se o valor da variável message for "django", o filtro produzirá "Django".
cut
O filtro cut remove todas as ocorrências de uma substring específica em uma string.
{% with message="Eu estava em casa" %}
{{ message|cut:"estava" }}
{% endwith %}Aqui, a substring "estava" é eliminada da string original, resultando em "Eu em casa".
Verificação de valores e valores padrão
O filtro default retorna um valor padrão caso o valor original seja avaliado como falso.
{% with isEnabled=False %}
{{ isEnabled|default:"desativado" }}
{% endwith %}Como o valor de isEnabled é False, a saída será "desativado". Qualquer valor que seja avaliado como falso, como uma string vazia ou zero, também será substituído pelo valor padrão especificado.
O filtro default_if_none tem uma função semelhante, mas é aplicado apenas quando o valor original é None.
Exemplo:
{% with user=None %}
{{ user|default_if_none:"Indefinido" }}
{% endwith %}Neste caso, o filtro retorna "Indefinido", pois o valor de user é None.
floatformat
O filtro floatformat é usado para formatar números de ponto flutuante. Sem argumentos, ele arredonda o número para uma casa decimal.
Exemplo:
| Valor | Template | Resultado |
|---|---|---|
| 34.23234 | {{ value | floatformat }} | 34.2 |
| 34.00000 | {{ value | floatformat }} | 34 |
| 34.26000 | {{ value | floatformat }} | 34.3 |
Com um argumento numérico, o número é arredondado para o número de casas decimais especificado.
| Valor | Template | Resultado |
|---|---|---|
| 34.23234 | {{ value|floatformat:3 }} | 34.232 |
| 34.00000 | {{ value|floatformat:3 }} | 34.000 |
| 34.26000 | {{ value|floatformat:3 }} | 34.260 |
Se o argumento for negativo, zeros desnecessários na parte fracionária são removidos.
| Valor | Template | Resultado |
|---|---|---|
| 34.23234 | {{ value|floatformat:"-3" }} | 34.232 |
| 34.00000 | {{ value|floatformat:"-3" }} | 34 |
| 34.26000 | {{ value|floatformat:"-3" }} | 34.260 |
O argumento 0 arredonda o número para o inteiro mais próximo:
| Valor | Template | Resultado |
|---|---|---|
| 34.23234 | {{ value | floatformat : "0" }} | 34 |
| 34.00000 | {{ value | floatformat : "0" }} | 34 |
| 39.56000 | {{ value | floatformat : "0" }} | 40 |
Com o sufixo g, o filtro aplica uma formatação com separadores de milhares, conforme a localidade configurada no projeto.
| Valor | Template | Resultado |
|---|---|---|
| 34232.34 | {{ value|floatformat:"2g" }} | 34,232.34 |
| 34232.06 | {{ value|floatformat:"g" }} | 34,232.1 |
| 34232.00 | {{ value|floatformat:"-3g" }} | 34,232 |
No arquivo settings.py, a variável LANGUAGE_CODE define a localidade. Por exemplo:
LANGUAGE_CODE = 'en-us'Aqui, o separador decimal será um ponto e o de milhares será uma vírgula.
Formatação de Datas
O filtro date permite formatar objetos do tipo datetime em templates. Ele aceita especificadores para personalizar a exibição de datas e horários, de acordo com as necessidades do projeto.
Especificadores disponíveis:
d: Dia do mês com dois dígitos (zero à esquerda se necessário). Exemplo:'01'a'31'.j: Dia do mês sem zero à esquerda. Exemplo:'1'a'31'.D: Dia da semana abreviado (três caracteres). Exemplo:'Fri'.l: Dia da semana por extenso. Exemplo:'Friday'.S: Sufixo ordinal em inglês para o dia do mês. Exemplo:'st','nd','rd','th'.w: Número do dia da semana (domingo = 0, sábado = 6).z: Número do dia no ano (de 1 a 366).W: Número da semana no ano (a semana começa na segunda-feira). Exemplo:'1'a'53'.m: Mês com dois dígitos. Exemplo:'01'a'12'.n: Mês sem zero à esquerda. Exemplo:'1'a'12'.M: Nome do mês abreviado (três caracteres). Exemplo:'Jan'.b: Nome do mês abreviado em letras minúsculas. Exemplo:'jan'.E: Nome do mês localizado. Exemplo em inglês:'January'.F: Nome do mês por extenso. Exemplo:'January'.N: Abreviação do mês com ponto. Exemplo:'Jan.','Feb.'.t: Quantidade de dias no mês. Exemplo: 28 a 31.y: Ano com dois dígitos. Exemplo:'00'a'99'.Y: Ano com quatro dígitos. Exemplo:'0001'a'9999'.L: Indica se o ano é bissexto (True ou False).o: Ano conforme a numeração ISO-8601 da semana.g: Hora em formato de 12 horas sem zero à esquerda. Exemplo:'1'a'12'.G: Hora em formato de 24 horas sem zero à esquerda. Exemplo:'0'a'23'.h: Hora em formato de 12 horas com zero à esquerda. Exemplo:'01'a'12'.H: Hora em formato de 24 horas com zero à esquerda. Exemplo:'00'a'23'.i: Minutos com dois dígitos. Exemplo:'00'a'59'.s: Segundos com dois dígitos. Exemplo:'00'a'59'.u: Microssegundos. Exemplo: 000000 a 999999.a: Exibe'a.m.'ou'p.m.'.A: Exibe'AM'ou'PM'.f: Hora e minutos em formato de 12 horas. Exemplo:'1:30'.P: Hora e minutos em formato de 12 horas com'a.m.'ou'p.m.'. Exemplo:'12:30 p.m.'.e: Fuso horário. Exemplo:'GMT','-500','US/Eastern'.O: Diferença em relação ao horário de Greenwich. Exemplo:'+0200'.T: Abreviação do fuso horário local. Exemplo:'EST','MDT'.c: Data e hora no formato ISO 8601. Exemplo:'2008-01-02T10:30:00.000123+02:00'.r: Data e hora no formato RFC 5322.
Também é possível usar constantes predefinidas, como DATE_FORMAT, DATETIME_FORMAT, SHORT_DATE_FORMAT e SHORT_DATETIME_FORMAT.
Vamos ver um exemplo de uso do filtro date. No arquivo views.py, uma data é passada para o template:
from datetime import datetime
from django.shortcuts import render
def index(request):
return render(request, "index.html", context={"my_date": datetime.now()})No template, a data pode ser formatada da seguinte forma:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Django Example</title>
</head>
<body>
<div>
<h2>{{ my_date|date:"d.m.Y" }}</h2>
<h2>{{ my_date|date:"H:i" }}</h2>
<h2>{{ my_date|date:"c" }}</h2>
<h2>{{ my_date|date:"SHORT_DATE_FORMAT" }}</h2>
</div>
</body>
</html>
Operações com Listas
O Django também oferece filtros específicos para trabalhar com listas.
join
O filtro join converte os elementos de uma lista em uma string, utilizando o separador especificado.
{{ users|join:", " }}Se a variável users for a lista ["Tom", "Sam", "Bob", "Mike"], o resultado será a string "Tom, Sam, Bob, Mike".
slice
O filtro slice extrai uma parte da lista. Ele aceita índices inicial e final para determinar o intervalo desejado.
Exemplo:
{{ users|slice:"1:3" }}Aqui, são extraídos os elementos entre os índices 1 e 3 (não inclusivo). Se users for a lista ["Tom", "Sam", "Bob", "Mike"], o resultado será ["Sam", "Bob"].
length
O filtro length retorna o tamanho de uma lista ou string.
Exemplo:
{{ users|length }}Se users for a lista ["Tom", "Sam", "Bob", "Mike"], o resultado será 4.
Documentação oficial: