Django模板中切片filter.form.tags时for循环报错求助
问题分析与解决
你遇到的这个错误,核心原因是Django模板中变量和过滤器之间不能有空格!
看你写的代码:
{% for field in filter.form.tags | slice:"0:10" %}
在filter.form.tags和|之间的空格,让模板引擎无法正确解析这个表达式,它会把filter.form.tags | slice:"0:10"当成一个不符合格式的“y”部分,所以抛出了那个语法错误提示。
第一步:修正语法错误
把空格去掉,改成这样:
{% for field in filter.form.tags|slice:"0:10" %} {{ field }} {{ field.label_tag }} {% endfor %}
第二步:确认你是否访问了正确的可迭代对象
不过这里还有个潜在问题:如果filter.form.tags是一个表单字段(比如ModelMultipleChoiceField),那直接遍历它是不对的——你需要遍历它的选项列表,也就是choices属性。所以正确的写法应该是:
{% for tag_option in filter.form.tags.choices|slice:"0:10" %} <option value="{{ tag_option.0 }}">{{ tag_option.1 }}</option> {% endfor %}
(当然,如果你是想自定义渲染这个字段的选项,而不是用默认的{{ field }}渲染,上面的写法更合适)
如果你的filter.form.tags本身就是一个可迭代的标签集合,那第一步的修正就足够解决语法错误了。
内容的提问来源于stack exchange,提问作者GRS
相关产品推荐
相关产品推荐

