Можно ли параметризовать библиотеку тегов шаблона в каталоге шаблонов?
Допустим, я пишу библиотеку тегов шаблонов форм для Django, но хочу иметь возможность отображать формы как на Bootstrap, так и на UIKit.
Код Python будет идентичен, за исключением ссылки на шаблон. Упрощенный
@register.inclusion_tag('myforms/bootstrap/formrow.html')
def form_row(fieldname, labelpos, labelsize, widgetsize):
return {...}
vs.
@register.inclusion_tag('myforms/uikit/formrow.html')
def form_row(fieldname, labelpos, labelsize, widgetsize):
return {...}
Я хотел бы предотвратить дублирование кода python, но функция @register.inclusion_tag(..)
выполняется очень рано в жизненном цикле Django, поэтому я не уверен, возможно ли это, или как это сделать...
В соответствии с документацией можно зарегистрировать тег включения, используя django.template.Template
экземпляр, что означает, что вы можете сделать следующее,
# Pseudo code
from django.template.loader import get_template
bootstrap = get_template('myforms/bootstrap/formrow.html')
uikit = get_template('myforms/uikit/formrow.html')
register.inclusion_tag(bootstrap)(re_usable_form_row_function)
register.inclusion_tag(uikit)(re_usable_form_row_function)