..
.. META INFORMATION OF TRANSLATION
..
.. $TranslationStatus: Done, waiting for revision $
.. $OriginalRevision: 11348 $
.. $TranslationAuthors: Robson Mendonça $
..
.. INFO OF THIS FILE (DO NOT EDIT! UPDATED BY SUBVERSION)
..
.. $HeadURL: http://django-l10n-portuguese.googlecode.com/svn/branches/docs-1.0.X/ref/templates/builtins.txt $
.. $LastChangedRevision: 517 $
.. $LastChangedBy: robsonmwoc $
.. $LastChangedDate: 2009-08-01 23:09:26 -0300 (Sat, 01 Aug 2009) $
..
.. _ref-templates-builtins:
===============================================
Tags e filtros de template embutidos (Built-in)
===============================================
Este documento descreve as tags e filtros de templates embutidos do Django. É
recomendado o uso da
:ref:`documentação automática
...
{% endfor %}
Você pode usar variáveis, também. Por exemplo, se você tem duas variáveis de
template, ``rowvalue1`` e ``rowvalue2``, você pode montar ciclos entre seus
valores desta forma::
{% for o in some_list %}
...
{% endfor %}
Sim, você pode mesclar variáveis e strings::
{% for o in some_list %}
...
{% endfor %}
Em alguns casos você pode querer referenciar o próximo valor de um ciclo de fora
de um loop. Para fazer isto, é só ter uma tag ``{% cycle %}``, usando "as",
desta forma::
{% cycle 'row1' 'row2' as rowcolors %}
A partir daqui, você pode inserir o valor atual de um ciclo onde você quiser
dentro do seu template::
...
...
Você pode usar qualquer número de valores em uma tag ``{% cycle %}``, separados
por espaços. Os valores colocados dentro de aspas simples (``'``) ou duplas
(``"``) são tratados como strings, enquanto que valores sem aspas serão tratados
como variáveis de template.
Perceba que as variáveis incluídas no cycle não serão escapadas. Isto porque a
tag de template não escapa seus conteúdos. Se você deseja escapar as variáveis
no cycle, você deve fazê-lo explicitamente::
{% filter force_escape %}
{% cycle var1 var2 var3 %}
{% endfilter %}
Para retro-compatibilidade, a tag ``{% cycle %}`` suporta a mais antiga sintaxe
vinda de versões antigas do Django. Você não deve usar isto em qualquer novo
projeto, porém, para saúde das pessoas que ainda estão usando-o, aqui está a
a forma antiga de se usar::
{% cycle row1,row2,row3 %}
Nesta sintaxe, cada valor é interpretado como uma string, e não há meios de
especificar valores de variáveis. Ou vígulas de fato. Ou espaços. Nós
mensionamos que você não deve usar esta sintaxe em nenhum novo projeto?
.. templatetag:: debug
debug
~~~~~
Mostra todas as informações carregadas de debug, incluindo o contexto atual e
os módulos importados.
.. templatetag:: extends
extends
~~~~~~~
Sinal que este template extende um template pai.
Esta tag pode ser usada de duas formas:
* ``{% extends "base.html" %}`` (sem aspas) usa o valor literal
``"base.html"`` como o nome do template pai a ser extendido.
* ``{% extends variable %}`` usa o valor da ``variable``. Se a variável é uma
string, o Django irá usá-la como o nome do template pai. Se a variável for um
objeto ``Template``, o Django irá usar o objeto como o template pai.
Veja :ref:`template-inheritance` para mais informações.
.. templatetag:: filter
filter
~~~~~~
Filtra os conteúdos da variável através da variável filtros.
Filtros podem também ser combinados entre eles, e eles podem ter argumentos --
assim como na sintaxe de variáveis.
Exemplo de uso::
{% filter force_escape|lower %}
Este texto terá o HTML escapado, e irá aparecer todo em minúsculo.
{% endfilter %}
.. templatetag:: firstof
firstof
~~~~~~~
Mostra a primeira variável passada que não for False, sem escape.
Não mostra nada se todas as variáveis recebidas forem False.
Exemplo de uso::
{% firstof var1 var2 var3 %}
Isto é equivalente a::
{% if var1 %}
{{ var1|safe }}
{% else %}{% if var2 %}
{{ var2|safe }}
{% else %}{% if var3 %}
{{ var3|safe }}
{% endif %}{% endif %}{% endif %}
Você pode também usar uma string como um valor de segurança no caso de todas as
variáveis passadas serem False::
{% firstof var1 var2 var3 "valor de segurança" %}
Note que as variáveis incluídas na tag firstof não serão escapadas. Isto porque
as tags de template não são escapam seus conteúdos. Se você deseja escapar o
conteúdo das variáveis da tag firstof, você deve fazê-lo explicitamente::
{% filter force_escape %}
{% firstof var1 var2 var3 "fallback value" %}
{% endfilter %}
.. templatetag:: for
for
~~~
Faz um loop sobre cada item de um array. Por exemplo, para mostrar uma lista de
atletas vindos de ``athlete_list``::
{% for athlete in athlete_list %}
Você pode iterar a lista ao contrário usando ``{% for obj in list reversed %}``.
.. versionadded:: 1.0
Se você precisa iterar uma lista de listas, você pode descompactar os valores
de cada sub-lista em variáveis individuais. Por exemplo, se seu contexto contém
uma lista de coordenadas (x,y) chamada ``points``, você poderia usar a seguinte
saída de lista de pontos::
{% for x, y in points %}
Este é um ponto em {{ x }},{{ y }}
{% endfor %}
Isso também pode ser útil se você precisa acessar os ítens de um dicionário. Por
exemplo, se seu contexto contém um dicionário ``data``, o seguinte código irá
mostrar as chaves e valores do dicionário::
{% for key, value in data.items %}
{{ key }}: {{ value }}
{% endfor %}
O loop for cria algumas variáveis dentro do loop:
========================== ================================================
Variável Descrição
========================== ================================================
``forloop.counter`` A iteração atual do loop (começando de 1)
``forloop.counter0`` A iteração atual do loop (começando de 0)
``forloop.revcounter`` O número de iterações começando do final do loop
(começando do 1)
``forloop.revcounter0`` O número de iterações começando do final do loop
(começando do 0)
``forloop.first`` True se esta é a primeira volta do loop
``forloop.last`` True se esta é a última volta do loop
``forloop.parentloop`` Para loops aninhados, este é o loop "acima" do
loop atual
========================== ================================================
.. templatetag:: if
if
~~
A tag ``{% if %}`` avalia uma variável, e se a variável for "verdadeira" (i.e.
existe, não está vazia, e não tem um valor booleano falso) o conteúdo do bloco
é mostrado::
{% if athlete_list %}
Número de atletas: {{ athlete_list|length }}
{% else %}
Não há atletas.
{% endif %}
Acima, se ``athlete_list`` não for vazio, o numero de atletas será mostrado pela
variável ``{{ athlete_list|length }}``.
Como você pode ver, a tag ``if`` pode ter uma clausula opcional ``{% else %}``
que será mostrado se o teste falhar.
As tags ``if`` podem usar ``and``, ``or`` ou ``not`` para testar um várias
variáveis ou para negá-las::
{% if athlete_list and coach_list %}
Ambos, atletas e treinadores estão disponíveis.
{% endif %}
{% if not athlete_list %}
Não há atletas.
{% endif %}
{% if athlete_list or coach_list %}
Há alguns atletas ou alguns treinadores.
{% endif %}
{% if not athlete_list or coach_list %}
Não á atletas ou há alguns treinadores (OK, escrever lógica
booleana em português parece idiota. Mas não é falha nossa.
Escreveram isso em ingês antes, hehehe).
{% endif %}
{% if athlete_list and not coach_list %}
There are some athletes and absolutely no coaches.
Não há qualquer atleta e absolutamente nenhum treinador.
{% endif %}
As tags ``if`` não permitem clausulas ``and`` e ``or`` dentro da mesma tag, pois
a ordem da lógica pode ser ambígua. Por exemplo, isto é inválido::
{% if athlete_list and coach_list or cheerleader_list %}
Se você precisa combinar ``and`` e ``or`` para lógica avançada, use as tags
``if`` aninhadas. Por exemplo::
{% if athlete_list %}
{% if coach_list or cheerleader_list %}
Nós temos atletas, e também treinadores ou líderes de torcida!
{% endif %}
{% endif %}
Múltiplos usos do mesmo operador lógico são bons, desde que você use o mesmo
operador. Por exemplo, istó é válido::
{% if athlete_list or coach_list or parent_list or teacher_list %}
.. templatetag:: ifchanged
ifchanged
~~~~~~~~~
Checa se o valor mudou desde a última iteração de um loop.
O tag de bloco 'ifchanged' é usada dentro de um loop. Existem duas
possibilidades de uso.
1. Checa seu próprio conteúdo renderizado contra seu estado anterior e somente
mostra o conteúdo se ele mudou. Por exemplo, isto mostra uma lista de dias,
somente mostrando o mês se ele muda::
Archive for {{ year }}
{% for date in days %}
{% ifchanged %}{{ date|date:"F" }}
{% endifchanged %}
{{ date|date:"j" }}
{% endfor %}
2. Para uma determinada variável, checa e essa variável mudou. Por exemplo, a
seguinte código mostra a data toda vez que ela muda, mas somente mostra a
hora se ambos, hora e data, tiverem mudado::
{% for date in days %}
{% ifchanged date.date %} {{ date.date }} {% endifchanged %}
{% ifchanged date.hour date.date %}
{{ date.hour }}
{% endifchanged %}
{% endfor %}
A tag ``ifchanged`` pode também ter uma cláusula opicional ``{% else %}`` que
será mostrada se o valor não mudou::
{% for match in matches %}
{% for gender in gender_list %}
Vamos examinar este exemplo. ``{% regroup %}`` recebe três argumentos: a lista
que você quer agrupar, o atributo ao qual será agrupado, e o nome da lista
resultante. Aqui, nós estamos agrupando a lista de ``people`` pelo atributo
``gender`` e chmando o resultado de ``gender_list``.
``{% regroup %}`` produz uma lista (neste caso, ``gender_list``) de
**objetos grupo**. Cada objeto grupo possui dois atributos:
* ``grouper`` -- o item que foi agrupado por (e.g., a string "Male" ou
"Female").
* ``list`` -- uma lista de todos os ítens deste grupo (e.g., uma lista de
todos as pessoas com gender='Male').
Note que ``{% regroup %}`` não ordena sua entrada! Nosso exemplo se basea no
fato de que a lista ``people`` foi ordenada por ``gender``, em primeiro lugar.
Se a lista ``people`` *não* foi ordenada por ``gender``, o agrupamento poderia
ingenuamente gerar uma lista com mais de um grupo com um único *gender*. Por
exemplo, digamos que a lista ``people`` foi setada desta forma (note que os
*males* não foram agrupados):
.. code-block:: python
people = [
{'first_name': 'Bill', 'last_name': 'Clinton', 'gender': 'Male'},
{'first_name': 'Pat', 'last_name': 'Smith', 'gender': 'Unknown'},
{'first_name': 'Margaret', 'last_name': 'Thatcher', 'gender': 'Female'},
{'first_name': 'George', 'last_name': 'Bush', 'gender': 'Male'},
{'first_name': 'Condoleezza', 'last_name': 'Rice', 'gender': 'Female'},
]
Com esta entrada para ``people``, o exemplo de código de template
``{% regroup %}`` acima, poderia resultar na seguinte saída:
* Male:
* Bill Clinton
* Unknown:
* Pat Smith
* Female:
* Margaret Thatcher
* Male:
* George Bush
* Female:
* Condoleezza Rice
A solução mais fácil para este problema é ter certeza de que seu código no view
ordenou a data de acordo com o que você deseja exibir.
Outra solução é classificar os dados no template usando o filtro ``dictsort``,
se seus dados estão em um dicionário::
{% regroup people|dictsort:"gender" by gender as gender_list %}
.. templatetag:: spaceless
spaceless
~~~~~~~~~
Remove espaços em branco entre tags HTML. Isto incluí tabs e novas linhas.
exemplo de uso::
{% spaceless %}
{% endspaceless %}
Este exemplo poderia retornar este HTML::
Somente espaços entre *tags* são removidos -- não espaços entre tags e textos.
Neste exemplo, o espaço ao redor de ``Hello`` não foi removido::
{% spaceless %}
Hello
{% endspaceless %}
.. templatetag:: ssi
ssi
~~~
Mostra os conteúdos de um dado arquivo dentro da página.
Como uma simples tag "include", ``{% ssi %}`` incluí o conteúdo de outro
arquivo -- que devem ser especificados usando um caminho absoluto -- na página
atual::
{% ssi /home/html/ljworld.com/includes/right_generic.html %}
Se o parâmetro opcional "parsed" for informado, o conteúdo do arquivo incluído
será validado como código de template, dentro do contexto atual::
{% ssi /home/html/ljworld.com/includes/right_generic.html parsed %}
Note que se você usar ``{% ssi %}``, você precisará definir
:setting:`ALLOWED_INCLUDE_ROOTS` nas suas configurações do Django, como uma
medida de segurança.
Veja também: ``{% include %}``.
.. templatetag:: templatetag
templatetag
~~~~~~~~~~~
Mostra um dos caracteres de sintaxe usados para compor tags de template.
Uma vez que o sistema de template não tem nenhum conceito de "escape", para
mostrar um pouco do que está em uso nas tags de template, você deve usar a tag
``{% templatetag %}``.
O argumento diz qual parte do template deve ser mostrado:
================== =======
Argumento Saídas
================== =======
``openblock`` ``{%``
``closeblock`` ``%}``
``openvariable`` ``{{``
``closevariable`` ``}}``
``openbrace`` ``{``
``closebrace`` ``}``
``opencomment`` ``{#``
``closecomment`` ``#}``
================== =======
.. templatetag:: url
url
~~~
Retorna uma URL absoluta (i.e, uma URL sem o nome do domínio) combinando uma
certa função view e parametros opcionais. Esta é uma forma de gerar links sem
violar os principios do DRY, ao escrever na mão as URLs nos seus templates::
{% url path.to.some_view arg1,arg2,name1=value1 %}
O primeiro argumento é um caminho para uma função view no formato
``package.package.module.function``. Argumentos adicionais são opcionais e devem
ser separados por vírgula, pois serão usados como argumentos posicionais e
nomeados na URL. Todos os argumentos obrigatórios pelo URLConf devem estar
presentes.
Por exemplo, suponha que voce tem um view, ``app_views.client``, cujo URLConf
recebe um client ID (aqui, ``client()`` é um método dentro do arquivo view
``app_views.py``). A linha do URLConf pode parecer com isso:
.. code-block:: python
('^client/(\d+)/$', 'app_views.client')
Se o URLConf desta applicação está incluido no URLConf do projeto com um caminho
como este:
.. code-block:: python
('^clients/', include('project_name.app_name.urls'))
...então, em um template, você pode criar um link para este view desta forma::
{% url app_views.client client.id %}
A tag do template gerará uma string ``/clients/client/123/``.
.. versionadded:: 1.0
Se você está usando :ref:`padrões de URL nomeados
{% for item in gender.list %}
Acima, se ``this_value`` é 175 e ``max_value`` é 200, a imagem do exemplo acima
terá 88 pixels de largura (porque 175/200 = .875; .875 * 100 = 87.5 que é
arredondado para cima, 88).
.. templatetag:: with
with
~~~~
.. versionadded:: 1.0
Cacheia uma variável complexa sob um simples nome. Isto é usual quando se acessa
um método muito "custoso" (e.g, um que consulta o banco de dados) múltiplas
vezes.
Por exemplo::
{% with business.employees.count as total %}
{{ total }} employee{{ total|pluralize }}
{% endwith %}
A variável populada (do exemplo acima, ``total``) somente está disponível entre
as tags ``{% with %}`` e ``{% endwith %}``.
.. _ref-templates-builtins-filters:
Referência de filtros embutidos
-------------------------------
.. templatefilter:: add
add
~~~
Adiciona o argumento ao valor.
Por exemplo::
{{ value|add:"2" }}
Se ``value`` é ``4``, então a saída será ``6``.
.. templatefilter:: addslashes
addslashes
~~~~~~~~~~
Adiciona barras antes das aspas. Usual para escapar strings em CSV, por exemplo.
.. templatefilter:: capfirst
capfirst
~~~~~~~~
Torna a primeira letra do valor maiúscula.
.. templatefilter:: center
center
~~~~~~
Centraliza o valor no campo conforme uma dada largura.
.. templatefilter:: cut
cut
~~~
Remove todos os valores do argumento de uma dada string.
Por exemplo::
{{ value|cut:" "}}
Se ``value`` é ``"String with spaces"``, a saída será ``"Stringwithspaces"``.
.. templatefilter:: date
date
~~~~
Formata a data de acordo com o formato dado (o mesmo que a tag `now`_).
Por exemplo::
{{ value|date:"D d M Y" }}
Se ``value`` é um objeto ``datetime`` (e.g., o resultado de
``datetime.datetime.now()``), a saída será a string ``'Wed 09 Jan 2008'``.
Quando usado sem uma string de formatação::
{{ value|date }}
...a string de formatação definida na configuração :setting:`DATE_FORMAT` será
utilizada.
.. templatefilter:: default
default
~~~~~~~
Se o valor é ``False``, usa o dado padrão, Do contrário, usa o valor.
Por exemplo::
{{ value|default:"nothing" }}
Se ``value`` é ``""`` (uma string vazia), a saída será ``nothing``.
.. templatefilter:: default_if_none
default_if_none
~~~~~~~~~~~~~~~
Se (e somente se) o valor for ``None``, use o dado padrão. Do contrário, use o
valor.
Note que se uma string vazia for passada, o valor padrão *não* será usado.
Use o filtro ``default`` se você quiser suportar strings vazias.
Por exemplo::
{{ value|default_if_none:"nothing" }}
Se ``value`` é ``None``, a saída será a string ``"nothing"``.
.. templatefilter:: dictsort
dictsort
~~~~~~~~
Recebe uma lista de dicionários e retorna a lista ordenada por uma chave
forncecida no argumento.
Por exemplo::
{{ value|dictsort:"name" }}
Se ``value`` é:
.. code-block:: python
[
{'name': 'zed', 'age': 19},
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
]
então a saída poderia ser:
.. code-block:: python
[
{'name': 'amy', 'age': 22},
{'name': 'joe', 'age': 31},
{'name': 'zed', 'age': 19},
]
.. templatefilter:: dictsortreversed
dictsortreversed
~~~~~~~~~~~~~~~~
Recebe uma lista de dicionários e retorna uma lista ordenada reversamente, por
uma chave fornecida em um argumento. Este funciona exatamente igual ao filtro
acima, mas o valor retornado será na ordem contrária.
.. templatefilter:: divisibleby
divisibleby
~~~~~~~~~~~
Retorna ``True`` se o valor é divisível por um argumento.
Por exemplo::
{{ value|divisibleby:"3" }}
Se ``value`` é ``21``, a saída poderia ser ``True``.
.. templatefilter:: escape
escape
~~~~~~
Escapa strings HTML. Especificamente, fazendo substituições:
* ``<`` é convertido para ``<``
* ``>`` é convertido para ``>``
* ``'`` (aspas simples) é convertido para ``'``
* ``"`` (aspas duplas) é convertido para ``"``
* ``&`` é convertido para ``&``
O escape é somente aplicado quando a string é exibida, então não importa onde,
dentro de uma sequência encadeada de filtros, você coloca ``escape``: ele sempre
será aplicado como se fosse o último filtro. Se você deseja que o escape seja
aplicado imediatamente, use o filtro ``force_escape``.
Aplicando ``escape`` para uma variável que normalmente teria aplicado um
auto-escaping no seu conteúdo, somente resultará em uma rodada de escape a ser
feita. Então é seguro usar esta função mesmo em ambientes que possuem escape
automático. Se você deseja multiplicar os passes do ``escape`` a serem
aplicados, use o filtro ``force_escape``.
.. versionchanged:: 1.0
Devido ao auto-escape, o comportamento deste filtro foi ligeiramente mudado.
As substituições são feitas somente uma vez, depois de todos os outros
filtros -- incluíndo os filtros antes e depois dele.
.. templatefilter:: escapejs
escapejs
~~~~~~~~
.. versionadded:: 1.0
Escapa caracteres para uso em strings de JavaScript. Ele *não* cria a string
pronta para usar em HTML, mas proteje você de erros de sintaxe quando são usados
templates para gerar JavaScript/JSON.
.. templatefilter:: filesizeformat
filesizeformat
~~~~~~~~~~~~~~
Formata o valor como um tamanho de arquivo 'legível por humanos' (i.e.
``'13 KB'``, ``'4.1 MB'``, ``'102 bytes'``, etc).
Por exemplo::
{{ value|filesizeformat }}
Se ``value`` é 123456789, a saída poderia ser ``117.7 MB``.
.. templatefilter:: first
first
~~~~~
Retorna o primeiro item de uma lista.
Por exemplo::
{{ value|first }}
Se ``value`` é a lista ``['a', 'b', 'c']``, a saída será ``'a'``.
.. templatefilter:: fix_ampersands
fix_ampersands
~~~~~~~~~~~~~~
.. versionchanged:: 1.0
Este raramente é útil pois comerciais (*&*) são automaticamente escapados agora. Veja escape_ para mais informações.
Substitui comecial (*&*) pela entidade ``&``.
Por exemplo::
{{ value|fix_ampersands }}
Se ``value`` é ``Tom & Jerry``, a saída será ``Tom & Jerry``.
.. templatefilter:: floatformat
floatformat
~~~~~~~~~~~
Quando usado sem um argumento, arredonda um número em ponto flutuante para uma
casa decimal -- mas somente se houver uma parte decimal para ser mostrada. Por
exemplo:
============ =========================== ========
``value`` Template Saída
============ =========================== ========
``34.23234`` ``{{ value|floatformat }}`` ``34.2``
``34.00000`` ``{{ value|floatformat }}`` ``34``
``34.26000`` ``{{ value|floatformat }}`` ``34.3``
============ =========================== ========
Se usado com um argumento numérico inteiro, ``floatformat`` arredonda um número
para várias casas decimais. Por exemplo:
============ ============================= ==========
``value`` Template Saída
============ ============================= ==========
``34.23234`` ``{{ value|floatformat:3 }}`` ``34.232``
``34.00000`` ``{{ value|floatformat:3 }}`` ``34.000``
``34.26000`` ``{{ value|floatformat:3 }}`` ``34.260``
============ ============================= ==========
Se o argumento passado para ``floatformat`` é negativo, ele irá arredondar o
número para muitas casas decimais -- mas comente se houver uma parte decimal
a ser mostrada. Por exemplo:
============ ================================ ==========
``value`` Template Saída
============ ================================ ==========
``34.23234`` ``{{ value|floatformat:"-3" }}`` ``34.232``
``34.00000`` ``{{ value|floatformat:"-3" }}`` ``34``
``34.26000`` ``{{ value|floatformat:"-3" }}`` ``34.260``
============ ================================ ==========
Usando ``floatformat`` sem argumento é equivalente a usar ``floatformat`` com um
argumento ``-1``.
.. templatefilter:: force_escape
force_escape
~~~~~~~~~~~~
.. versionadded:: 1.0
Escapa o HTML para uma string (veja o filtro ``escape`` para detalhes).
Este filtro é aplicado *imediatamente* e retorna uma nova, string escapada. Ele
é usual em raros casos onde você precisa dar múltiplos escapes ou quer aplicar
outros filtros sobre resultados escapados. Normalmente, você quer usar o filtro
``escape``.
.. templatefilter:: get_digit
get_digit
~~~~~~~~~
Dado um número inteiro, retorna o dígito requisitado, onde 1 é o dígito mais a
direita, 2 é o segundo mais a direita, etc. Retorna o valor original no caso de
entradas inválidas (se a entrada ou argumento não for um inteiro, ou se o
argumento é menor que 1). Todo caso, a saída será sempre um inteiro.
Por exemplo::
{{ value|get_digit:"2" }}
Se ``value`` é ``123456789``, a saída será ``8``.
.. templatefilter:: iriendcode
iriencode
~~~~~~~~~
Converte uma IRI (Internationalized Resource Identifier) para uma string que é
adequada para uma URL. Isto é necessário se você está tentando usar strings que
possuem caracteres não ASCII na URL.
É seguro usar este filtro em uma string que também passou pelo filtro
``urlencode``.
.. templatefilter:: join
join
~~~~
Junta uma lista em uma string, como o ``str.join(list)`` do Python.
Por exemplo::
{{ value|join:" // " }}
Se ``value`` é a lista ``['a', 'b', 'c']``, a saída será a string
``"a // b // c"``.
.. templatefilter:: last
last
~~~~
.. versionadded:: 1.0
Retorna o último item de uma lista.
Por exemplo::
{{ value|last }}
Se ``value`` é a lista ``['a', 'b', 'c', 'd']``, a saída será a string ``"d"``.
.. templatefilter:: length
length
~~~~~~
Retorna o comprimento de um valor. Ela funciona para ambos strings e listas.
Por exemplo::
{{ value|length }}
Se ``value`` é ``['a', 'b', 'c', 'd']``, a saída será ``4``.
.. templatefilter:: length_is
length_is
~~~~~~~~~
Retorna ``True`` se o valor do comprimento é o argumento, ou ``False`` caso
contrário.
Por exemplo::
{{ value|length_is:"4" }}
Se ``value`` é ``['a', 'b', 'c', 'd']``, a saída será ``True``.
.. templatefilter:: linebreaks
linebreaks
~~~~~~~~~~
Substitui quebras de linha em textos planos pelo HTML apropriado; uma simples
quebra de linha se torna uma quebra de linha do HTML (``
``) e uma nova
linha seguida por uma linha em branco ser tornará uma parágrafo (``
Joel
is a slug