Загрузчик библиотеки тегов условных шаблонов Django - PullRequest
1 голос
/ 20 октября 2011

Я работаю над приложением Django, которое предоставляет шаблоны с дополнительными функциями, если доступны некоторые другие приложения.

Невозможно загрузить недоступную библиотеку тегов шаблонов, используя стандартный тег {% load %} Django. Попытка сделать это приводит к TemplateSyntaxError.

Кто-нибудь придумал решение этой проблемы? И.Е. загрузчик условных тегов lib, поэтому я могу сделать что-то вроде этого:

{% load_if_available app_tags %}

и

{% if_loaded app_tags %}{% endif %}

Ответы [ 2 ]

3 голосов
/ 21 октября 2011

Я создал новое приложение Django, которое делает то, что я хотел. Он называется django-friendly-tag-loader и доступен из PyPi http://pypi.python.org/pypi/django-friendly-tag-loader/ и может быть взломан @ https://github.com/ataylor32/django-friendly-tag-loader

Он предоставляет 3 тега шаблона: {% friendly_load %}, {% if_has_tag %} и {% ifnot_has_tag %}.

friendly_load почти такой же, как встроенный загрузчик Django, но он просто проглатывает InvalidTemplateLibrary и переходит к следующей библиотеке для загрузки.

if_has_tag / ifnot_has_tag проверяет, имеет ли анализатор шаблонов определенный заданный тег, а затем либо отображает, либо игнорирует бит шаблона.

1 голос
/ 20 октября 2011

Вы можете написать пользовательский шаблон тега и зарегистрировать его. Вы можете черпать вдохновение из шаблона * django load .

Проблема в том, нужно ли вам оборачивать все «загруженные» теги-шаблоны в ifs. Один из способов обойти это - зарегистрировать фиктивные функции, которые ничего не делают (может, просто что-то регистрируют, но не работают молча), чтобы код просто работал или, что еще лучше, создавал дополнительный модуль if_module_loaded и пропускал код внутри. Зависит от вашего варианта использования.

...