django templatetags inclusion_tag - создаем свой шаблонный тег для джанго
При разработке сайта часто требуются определенные блоки, хотя бы те же новости вывести.
В Django это делается с помощью django templatetags и небольшим упрощением с помощью inclusion_tag. Таким образом создать свой шаблонный тег очень легко.
Шаблонный тег относится чаще всего к приложению, то именно для него и создадим необходимую структуру, плюс отдельно подключать его не потребуется.
Для того чтобы django обработало данный файл, как шаблонные тег, нужно в директории приложения создать директорию templatetags, а уже в ней пустой файл
__init__.pyВ ней же создать файл с произвольным названием, которое потом будет названием тега, например
listlastnews.pyСодержимое файла следующее
listlastnews.py
# -*- coding: UTF-8 -*-
from django import template
register=template.Library()
@register.inclusion_tag('newslist/lastnews_tpl.html') # регистрируем тег и подключаем шаблон lastnews_tpl.html из папки newslist
def lastnews():
spisok = "111111111111" # можно передавать не только строки, но и сложные объекты типа выборки из базы данных
return {
'last3news':spisok
}
содержимое шаблона lastnews_tpl.html
lastnews_tpl.html
<div id = "news">
{{ last3news }}
</div>
Осталось в нужном месте нашего общего (или частного) шаблона загрузить данный тег другим спецтегом (load название файла с шаблоном)
Пример использования, в шаблоне base_tpl.html
{% load listlastnews %}
{% lastnews %}