是否可以创建一个评估为布尔值的Django模板标记?
例如,我可以这样做:
{% if my_custom_tag %}
..
{% else %}
..
{% endif %}
目前我已将其作为标签编写,其工作原理如下:
{% my_custom_tag as var_storing_result %}
但我只是好奇,如果我能以另一种方式做到这一点,因为我认为如果我不必先将结果分配给变量就会更好。
谢谢!
答案 0 :(得分:5)
一种替代方法可能是定义一个返回布尔值的自定义过滤器:
{% if my_variable|my_custom_boolean_filter %}
但只有当你的标签依赖于其他模板变量时才会有效。
答案 1 :(得分:5)
实际上......您可以做的是将代码注册为assignment_tag
而不是simple_tag
然后在您的模板中,您可以只执行{% my_custom_tag as var_storing_result %}
一次,然后定期查看您想要的块评估布尔值。超级有用!例如
模板标记
def my_custom_boolean_filter:
return True
register.assignment_tag(my_custom_boolean_filter)
<强>模板强>
{% my_custom_boolean_filter as my_custom_boolean_filter %}
{% if my_custom_boolean_filter %}
<p>Everything is awesome!</p>
{% endif %}
答案 2 :(得分:2)
您必须编写某种自定义{%if%}标记来处理该问题。在我看来,最好使用你已经拥有的东西。它运行良好,任何其他开发人员都可以轻松找出正在发生的事情。