.. .. 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$ .. $LastChangedRevision$ .. $LastChangedBy$ .. $LastChangedDate$ .. .. _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 :doc:`documentação automática `, se disponível, que irá incluir a documentação de qualquer tag ou filtro personalizado instalado. .. _ref-templates-builtins-tags: Referência de tags nativas -------------------------- .. highlightlang:: html+django .. templatetag:: autoescape autoescape ~~~~~~~~~~ Controla o comportamento de auto-scaping atual. Esta tag tem que receber ``on`` ou ``off`` como um argumento que determina se o auto-scaping surtirá efeito dentro do bloco. Quando o auto-scaping surte efeito, todo conteúdo de variável tem seu HTML escapado, antes do resultado ser jogado para saída (mas depois dos filtros serem aplicados). Isto equivale a você aplicar manualmente o filtro ``escape`` em cada variável. A única exceção são variáveis que já estão marcadas como "safe", que atráves de código foram povoadas, ou porque tem os filtros ``safe`` ou ``escape`` aplicados. Sample usage:: {% autoescape on %} {{ body }} {% endautoescape %} .. templatetag:: block block ~~~~~ Define um bloco que pode ser sobrescrito por um template filho. Veja :ref:`Herança de template ` para mais informações. .. templatetag:: comment comment ~~~~~~~ Ignora tudo entre dois ``{% comment %}`` e ``{% endcomment %}`` .. templatetag:: csrf_token csrf_token ~~~~~~~~~~ In the Django 1.1.X series, this is a no-op tag that returns an empty string for future compatibility purposes. In Django 1.2 and later, it is used for CSRF protection, as described in the documentation for :doc:`Cross Site Request Forgeries `. .. templatetag:: cycle cycle ~~~~~ Ciclo entre dadas strings ou variáveis a cada vez que esta tag é encontrada. Dentro de um loop, ciclos entre dadas strings a cada volta dentro do loop:: {% for o in some_list %} ... {% 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 %} From then on, you can insert the current value of the cycle wherever you'd like in your template by referencing the cycle name as a context variable. If you want to move the cycle onto the next value, you use the cycle tag again, using the name of the variable. So, the following template:: ... ... ... ... would output:: ... ... ... ... 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. Any HTML or Javascript code contained in the printed variable will be rendered as-is, which could potentially lead to security issues. 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 mencionamos que você não deve usar esta sintaxe em nenhum novo projeto? .. versionadded:: 1.3 By default, when you use the ``as`` keyword with the cycle tag, the usage of ``{% cycle %}`` that declares the cycle will itself output the first value in the cycle. This could be a problem if you want to use the value in a nested loop or an included template. If you want to just declare the cycle, but not output the first value, you can add a ``silent`` keyword as the last keyword in the tag. For example:: {% for obj in some_list %} {% cycle 'row1' 'row2' as rowcolors silent %} {% include "subtemplate.html " %} {% endfor %} This will output a list of ```` elements with ``class`` alternating between ``row1`` and ``row2``; the subtemplate will have access to ``rowcolors`` in it's context that matches the class of the ```` that encloses it. If the ``silent`` keyword were to be omitted, ``row1`` would be emitted as normal text, outside the ```` element. When the silent keyword is used on a cycle definition, the silence automatically applies to all subsequent uses of the cycle tag. In, the following template would output *nothing*, even though the second call to ``{% cycle %}`` doesn't specify silent:: {% cycle 'row1' 'row2' as rowcolors silent %} {% cycle rowcolors %} .. 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``:: Você pode iterar a lista ao contrário usando ``{% for obj in list reversed %}``. 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 ========================== ================================================ for ... empty ^^^^^^^^^^^^^ The ``for`` tag can take an optional ``{% empty %}`` clause that will be displayed if the given array is empty or could not be found::