Встроенные теги в Django

категория: Django
Шпаргалка по встроенным в Django тегам для реализации большинства задач. Я пока еще не встречался с тем, что мне этих тегов не хватало и приходилось подключать другой шаблонизатор. Моментами создавал свои теги, я об этом уже писал, но за плечами не так уж и много опыта — поэтому не зарекаюсь :) Философия какая? Никакой логики, как в PHP, — только презентация. Без длинных предисловий — небольшой списочек тегов в алфавитном порядке: autoescape Вкл./выкл. исключений html тегов внутри блока:
{% autoescape on %}
    {{ body }}
{% endautoescape %}
block Определяет блок, который может быть переписан дочерними шаблонами:
{% block title %}
    {{ my_title }}
{% endblock %}
comment Вся информация игнорируется между блоками:
{% comment %}Ignore{% endcomment %}
csrf_token CSRF – защита, защита от подделывания запросов. cycle Циклическое перемещение по строкам и переменным при каждом столкновении с этим тегом:
{% for l in my_list %}
    <tr class=”{% cycle 'st' 'st1' var1 %}”>
      …
    </tr>
{% endfor %}
debug Выводит всю отладочную информацию, включая текущий контекст и подключенные модули. extends Сигнализирует, что этот шаблон расширяет родительский:
{% extends “base.html” %}
{% extends var1 %}
filter Фильтрует содержимое внутри блока с помощью фильтров переменных:
{% filter force_escape|lower %}
    This text wil be html-escaped and lowercase
{% endfilter %}
firstof Выводит первую переменную, которая не пустая:
{% firstof var1 var2 var3 “fallback value” %}
for Цикл, который проходит по всем элементам массива:
{% for key, value in data %}
  {{ key }}: {{ value }}
{% endfor %}
- forloop.counter – текущая итерация цикла, начиная с 1 - forloop.counter0 – текущая итерация цикла, начиная с 0 - forloop.revcounter – число итераций с конца цикла - forloop.revcounter0 – число итераций с конца цикла, включая 0 - forloop.first – True, если это первый раз - forloop.last – True, если это последний раз - forloop.parentloop – для вложенных циклов, этот цикл «над» текущим for … empty Упрощает цикл for:
{% for l in my_list %}
  {{ l.title }}
{% empty %}
  Sorry, here is nothing
{% endfor %}
if Условие:
{% if cond1 and cond2 or cond3 %}
  All is right
{% elif not cond4 %}
  Something is not right
{% else %}
  All is bad
{% endif %}
Операторы: ==, !=, <, >, <=, >=, in, not in ifchanged Проверяет изменилось ли значение после последней итерации цикла:
{% for match in matches %}
  <div style=”background-color:
    {% ifchanged match.some %}
      {% cycle 'red' 'blue' %}
    {% else %}
      grey
    {% endifchanged %}
  “>{{ match }</div>
{% endfor %}
include Загрузка шаблона и отображение его с текущим контекстом:
{% include “template.html” with name=”Vitalik” only %}
load Загружает собственные библиотеки тегов и фильтров:
{% load my_tag my_filter from my_library %}
now Отображает текущую дату и/или время, используя формат данной строки:
It is {% now “SHORT_DATE_FORMAT” %}
regroup Перегруппировать объекты списка за определенным признаком. spaceless Удаляет пробелы между html-тегами, включая табы и абзацы:
{% spaceless %}{% endspaceless %}
ssi Выводит контент данного файла на страницу, используя абсолютный путь к файлу:
{% ssi /home/html/acman.ru/includes/some-page.html %}
tamplatetag Показывает какой тег нужно использовать:
{% templatetag %}
{% - открытие тега %} - закрытие тега {{ - открытие переменной }} - закрытие переменной { - открытие скобки } - закрытие скобки {# - открытие комментария #} - закрытие комментария url Возвращает абсолютный путь к функционалу вьюхи и ее параметрам:
{% url path.to.some_view arg1=var1 arg2=var2 %}
widthratio Для создания гистограмм и п.т. Этот тег считает отношение текущего значения к максимальному.
<img src=”bar.jpg” height=”20” width=”{% widthratio this_val max_val 100 %}”
with Сохраняет в кэше комплексную переменную под простым названием. Полезно, когда нужно из базы часто выводить множественные значения. Переменная существует только между тегами:
{% with some_var=blog.news.count %}
    {{ some_var }}
{% endwith %}
На этом все, следующим шагом будет шпаргалка по встроенным фильтрам Django 1.4.


blog comments powered by Disqus