Django 条件模板标签库加载器
我正在开发一个Django应用,这个应用提供一些模板,这些模板会根据其他应用是否可用来决定是否启用某些功能。
如果某个模板标签库不可用,使用标准的{% load %}
标签是无法加载它的。这样做会导致出现TemplateSyntaxError
错误。
有没有人想出解决这个问题的方法?也就是说,能不能有一个条件加载标签库的功能,这样我就可以像这样写:
{% load_if_available app_tags %}
还有
{% if_loaded app_tags %}{% endif %}
2 个回答
6
我创建了一个新的Django应用,正好实现了我想要的功能。这个应用叫做django-friendly-tag-loader,可以在PyPi上找到,链接是 http://pypi.python.org/pypi/django-friendly-tag-loader/,你也可以在这里查看和修改代码 https://github.com/ataylor32/django-friendly-tag-loader
这个应用提供了三个模板标签:{% friendly_load %}
、{% if_has_tag %}
和 {% ifnot_has_tag %}
。
friendly_load
和Django自带的加载器几乎一样,但它会忽略掉InvalidTemplateLibrary
这个错误,继续加载下一个库。
if_has_tag
和ifnot_has_tag
用来检查模板解析器是否有某个特定的标签,然后根据检查结果来决定是否渲染模板的一部分,或者直接忽略它。