Filtros Embutidos nos Templates - 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
"Hello"
add
" Django"
Hello Django
capfirst
O filtro capfirst
{{ message|capfirst }}
Se o valor da variável message
"django"
"Django"
cut
O filtro cut
{% with message="Eu estava em casa" %}
{{ message|cut:"estava" }}
{% endwith %}
Aqui, a substring "estava"
"Eu em casa"
Verificação de valores e valores padrão
O filtro default
{% with isEnabled=False %}
{{ isEnabled|default:"desativado" }}
{% endwith %}
Como o valor de isEnabled
False
"desativado"
O filtro default_if_none
None
Exemplo:
{% with user=None %}
{{ user|default_if_none:"Indefinido" }}
{% endwith %}
Neste caso, o filtro retorna "Indefinido"
user
None
floatformat
O filtro floatformat
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
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
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
LANGUAGE_CODE
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
datetime
Especificadores disponíveis:
: Dia do mês com dois dígitos (zero à esquerda se necessário). Exemplo:d
a'01'
.'31'
: Dia do mês sem zero à esquerda. Exemplo:j
a'1'
.'31'
: Dia da semana abreviado (três caracteres). Exemplo:D
.'Fri'
: Dia da semana por extenso. Exemplo:l
.'Friday'
: Sufixo ordinal em inglês para o dia do mês. Exemplo:S
,'st'
,'nd'
,'rd'
.'th'
: Número do dia da semana (domingo = 0, sábado = 6).w
: Número do dia no ano (de 1 a 366).z
: Número da semana no ano (a semana começa na segunda-feira). Exemplo:W
a'1'
.'53'
: Mês com dois dígitos. Exemplo:m
a'01'
.'12'
: Mês sem zero à esquerda. Exemplo:n
a'1'
.'12'
: Nome do mês abreviado (três caracteres). Exemplo:M
.'Jan'
: Nome do mês abreviado em letras minúsculas. Exemplo:b
.'jan'
: Nome do mês localizado. Exemplo em inglês:E
.'January'
: Nome do mês por extenso. Exemplo:F
.'January'
: Abreviação do mês com ponto. Exemplo:N
,'Jan.'
.'Feb.'
: Quantidade de dias no mês. Exemplo: 28 a 31.t
: Ano com dois dígitos. Exemplo:y
a'00'
.'99'
: Ano com quatro dígitos. Exemplo:Y
a'0001'
.'9999'
: Indica se o ano é bissexto (True ou False).L
: Ano conforme a numeração ISO-8601 da semana.o
: Hora em formato de 12 horas sem zero à esquerda. Exemplo:g
a'1'
.'12'
: Hora em formato de 24 horas sem zero à esquerda. Exemplo:G
a'0'
.'23'
: Hora em formato de 12 horas com zero à esquerda. Exemplo:h
a'01'
.'12'
: Hora em formato de 24 horas com zero à esquerda. Exemplo:H
a'00'
.'23'
: Minutos com dois dígitos. Exemplo:i
a'00'
.'59'
: Segundos com dois dígitos. Exemplo:s
a'00'
.'59'
: Microssegundos. Exemplo: 000000 a 999999.u
: Exibea
ou'a.m.'
.'p.m.'
: ExibeA
ou'AM'
.'PM'
: Hora e minutos em formato de 12 horas. Exemplo:f
.'1:30'
: Hora e minutos em formato de 12 horas comP
ou'a.m.'
. Exemplo:'p.m.'
.'12:30 p.m.'
: Fuso horário. Exemplo:e
,'GMT'
,'-500'
.'US/Eastern'
: Diferença em relação ao horário de Greenwich. Exemplo:O
.'+0200'
: Abreviação do fuso horário local. Exemplo:T
,'EST'
.'MDT'
: Data e hora no formato ISO 8601. Exemplo:c
.'2008-01-02T10:30:00.000123+02:00'
: Data e hora no formato RFC 5322.r
Também é possível usar constantes predefinidas, como DATE_FORMAT
DATETIME_FORMAT
SHORT_DATE_FORMAT
SHORT_DATETIME_FORMAT
Vamos ver um exemplo de uso do filtro date
views.py
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
{{ users|join:", " }}
Se a variável users for a lista ["Tom", "Sam", "Bob", "Mike"]
"Tom, Sam, Bob, Mike"
slice
O filtro slice
Exemplo:
{{ users|slice:"1:3" }}
Aqui, são extraídos os elementos entre os índices 1
3
["Tom", "Sam", "Bob", "Mike"]
["Sam", "Bob"]
length
O filtro length
Exemplo:
{{ users|length }}
Se users for a lista ["Tom", "Sam", "Bob", "Mike"]
4