Django中能否在with语句内使用模板过滤器?
Django模板中在with子句使用过滤器的正确方式
你遇到的错误原因很明确:你把"x|get_data_id"当成字符串赋值给了variable_v,但Django的with标签需要的是合法的变量赋值逻辑——带引号的内容会被识别成普通字符串,而非执行过滤器操作,所以才会报错'with' expected at least one variable assignment。
答案是:完全可以在with子句中使用模板过滤器,但你得用正确的写法:
正确的with用法
直接对目标变量应用过滤器,不需要加引号,像这样:
{% with variable_v=x|get_data_id %} <p>{{ variable_v|get_data }}</p> {% endwith %}
这里x|get_data_id会先执行过滤器,把返回值赋值给variable_v,之后再传给get_data过滤器使用。
更简洁的替代方案
如果只是这种简单的链式过滤需求,其实没必要用with,直接把过滤器链式调用就行:
<p>{{ x|get_data_id|get_data }}</p>
这个写法逻辑和你想要的完全一致:先让x经过get_data_id处理,返回的结果直接作为get_data的参数,代码更简洁。
内容的提问来源于stack exchange,提问作者Mohammed Baashar
相关产品推荐
相关产品推荐

