我编写了一个自定义模板标记来查询我的数据库,并检查数据库中的值是否与给定的字符串匹配:
@register.simple_tag
def hs_get_section_answer(questionnaire, app, model, field, comp_value):
model = get_model(app, model)
modal_instance = model.objects.get(questionnaire=questionnaire)
if getattr(modal_instance, field) == comp_value:
return True
else:
return False
在我的模板中,我可以按如下方式使用此标记:
{% hs_get_section_answer questionnaire 'abc' 'def' 'ghi' 'jkl' %}
该函数正确返回True或False。
我的问题:我想做这样的事情:
{% if hs_get_section_answer questionnaire 'abc' 'def' 'ghi' 'jkl' %}
SUCCESS
{% else %}
FAILURE
{% endif %}
但这不起作用;好像“if”模板标签似乎无法处理多个参数。
有人能给我一个如何解决这个问题的提示吗?
答案 0 :(得分:1)
将模板标签调用的结果设置为变量,然后在该结果上调用{%if%}
{% hs_get_section_answer questionnaire 'abc' 'def' 'ghi' 'jkl' as result %}
{% if result %}
...
{% endif %}
您还需要更改模板标记以使用分配标记,而不是简单标记。请参阅分配标记django doc:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#assignment-tags
@register.assignment_tag
def hs_get_section_answer(questionnaire, app, model, field, comp_value):
model = get_model(app, model)
modal_instance = model.objects.get(questionnaire=questionnaire)
if getattr(modal_instance, field) == comp_value:
return True
else:
return False