WD5 - разработка сайтов

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 %}
None