我有下面的字典和对象列表。
args = {'Qtag': [
[<Question: Question object>, <Tags: Tags object>],
[<Question: Question object>, <Tags: Tags object>]
]
}
在我的views.py
中args=dict(Qtag=Questag)
t=loader.get.template('main.html')
c=Context(args)
在我的main.html中,我试图以下面的方式进行迭代
{%if Qtag %}
{% for item_list in Qtag %}
{% for item in item_list %}
</h4> <b> Question</b>:{{item.qid}} {{item.title}} </h4><br/>
</h4> {{item.question}} </h4>
<button name="tag" type="submit" value="tagname"> {{item.tagname}} </button>
{% endfor %}
{% endfor %}
{% endif %}
当我在main.html中尝试上述方法时,我会在屏幕上显示4次。这里,由Question对象列表和标签对象列表组成的第一个列表对应于单个问题,对于另一个问题类似,因此在屏幕中我只希望显示两个问题及其对应的标签。我无法正确迭代以获得我需要的东西。关于如何实现这一点的任何想法!!!
感谢。
答案 0 :(得分:2)
我不确定代码中args=dict(Qtag=Questag)
的含义(因为我不知道Questag
是什么)。我不知道你的标签是否也是可迭代的(我假设是这样)。您的HTML看起来也很不正确(例如,我看不到开头h4
)。
这就是我要做的事情,以获得类似于你所寻找的东西。你可以解决这个问题。
{% if Qtag %}
{% for question, tags in Qtag %}
{# First put in the question header #}
<h4>Question : {{question.qid}} {{question.title}} </h4>
{# Then the question body #}
<p>
{{question.question}}
</p>
{# Now a tag list #}
<ul>
{% for tag in tags %}
<li>
<button name = "tag" type="submit" value="{{tag.name}}">
{{tag.name}}
</button>
</li>
{% endfor %}
</ul>
{% endfor %}
{% endif %}
你的原始解决方案是以二次方式迭代列表(你在每个外部迭代中迭代一次列表)这就是你看到被打印4次的原因。