我有一个脚本,可以从其他网站导入表中的数据。这些表格的宽度在5到15列之间,长度任意。
在我得到原始数据后,我希望有机会确保我对列标题的猜测是正确的。所以我想在顶部列出一个列可以调用的15个内容。这样,我就可以快速更正由我的自动代码做出的任何糟糕的决定。
因此,自动代码生成两个数组,第一个字符串:
possible_headers=["一"、"二"、"三"…]
第一个数组中的第二个索引
likely_headers=[2,0,5…]
(列标题将是"三"、"一"one_answers"六")
在我的模板中这样使用它们:
{% for likely_head in likely_headers %}
<th>
<select name="colHeader">
{% for poss_head in possible_headers %}
{% if forloop.counter0 == likely_headers.forloop.parentloop.counter0 %}
<option value="Col:{{forloop.counter0}}" selected>{{poss_head}}</option>
{% else %}
<option value="Col:{{forloop.counter0}}">{{poss_head}}</option>
{% endif %}
{% endfor %}
</select>
</th>
{% endfor %}
考虑到可能的标题将是选择输入中的选定/默认项。问题是:
likely_headers.forloop.parentloop.counter0
不进行评估。forloop.pantloop.counter0工作正常,但显然它不能用作列表的索引。
我是django的新手,所以我可能做错了,请友善!
我不明白为什么要使用likely_headers.forloop.parentloop.counter0
,而根据文档,应该使用forloop.parentloop.counter0
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
你也可以尝试通过用{% with %}
标签封装计数器来解决这个问题
{% for likely_head in likely_headers %}
{% with forloop.counter0 as parent_counter %}
{% for poss_head in possible_headers %}
{{ parent_counter }}
{% endfor %}
{% endwith %}
{% endfor %}
我还没有检查它是否确实有效,但我认为它应该有效。
另外,您可能正在尝试解决模板中不应该解决的问题。您可以尝试使用标记,处理视图中的标头(使用库?),然后只返回应该呈现的标头列表。
我以为我拥有的整数列表实际上是一个字符串列表["1"、"5"、"3"],所以它们无法与for循环迭代器进行比较。创建一个真正的int列表解决了这个问题。