Atualizado: 14/12/2024

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 contém o valor "Hello". No momento da renderização, o filtro add anexa a string " Django", resultando em Hello Django. Essa variável também poderia ser um dado recebido do contexto da view.

Navegador exibindo texto feito com uso do filtro add inserido no template pelo servidor Django

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:

ValorTemplateResultado
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.

ValorTemplateResultado
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.

ValorTemplateResultado
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:

ValorTemplateResultado
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.

ValorTemplateResultado
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>
Navegador exibindo datas formatadas pelo servidor Django

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.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com