Django模板判断request.GET.query报TemplateSyntaxError如何解决
错误原因
你触发TemplateSyntaxError的核心原因是在{% if %}模板标签内部嵌套了变量输出符{{ }}:Django的模板标签块({% %}包裹的区域)本身就支持直接引用上下文变量,不需要额外用{{ }}包裹变量,重复的符号导致模板解析器无法识别语法。
正确判断方式
根据你的判断需求,可以选择以下两种实现:
场景1:判断query参数存在且值不为空
Django模板的if判断会自动将空字符串、None、空序列等判定为假值,直接引用变量即可:
{% if request.GET.query %} <td><a href="/detail/{{item.id}}/{{item.item_hs6}}/{{ request.GET.query }}">detail</a></td> {% else %} <td><a href="/detail/{{item.id}}/{{item.item_hs6}}">detail</a></td> {% endif %}
场景2:严格判断query参数是否存在(允许值为空字符串)
如果需要区分「参数不存在」和「参数存在但值为空」两种情况,可以用in运算符判断参数名是否在请求参数集合中:
{% if 'query' in request.GET %} <!-- 参数存在的对应逻辑,即使值为空也会进入该分支 --> {% else %} <!-- 参数完全不存在的对应逻辑 --> {% endif %}
内容的提问来源于stack exchange,提问作者daylyroppo3
相关产品推荐
相关产品推荐

