在我的views.py中我获得了5个dicts,它们都像{date:value} 所有5个dicts都有相同的长度,在我的模板中,我想根据这些dicts获取一些url,公共字段是日期 - 就像在基于公共列加入5个表时在sql查询中所做的那样
在python中你会做类似的事情:for key, value in loc.items():
print key, loc[key], ctg[key], sctg[key], title[key], id[key]
但是在django模板中我能想出的就是:
{% for lock, locv in loc.items %}
{% for ctgk, ctgv in ctg.items %}
{% for subctgk, subctgv in subctg.items %}
{% for titlek, titlev in titlu.items %}
{% for idk, idv in id.items %}
{% ifequal lock ctgk %}
{% ifequal ctgk subctgk %}
{% ifequal subctgk titlek %}
{% ifequal titlek idk %}
<br />{{ lock|date:"d b H:i" }} - {{ locv }} - {{ ctgv }} - {{ subctgv }} - {{ titlev }} - {{idv }}
.... {% endifequals & endfors %}
当然是丑陋的,需要花费很多时间才能呈现
现在我正在研究构建自定义标签,但我想知道你们是否有关于这个主题的任何反馈?
答案 0 :(得分:0)
听起来像你需要使用除了对齐的dicts之外的东西。一个小班的词典怎么样,包含你想要的东西:
class MyThing:
def __init__(self, loc, ctg, sctg, title, id):
self.loc = loc
self.ctg = ctg
self.sctg = sctg
self.title = title
self.id = id
这会让您的模板代码不那么痛苦吗? (抱歉,如果我误解了这个问题 - 我很难跟上你的嵌套if
!)。
答案 1 :(得分:0)
Django模板应该尝试用点作为字典查找来解析变量(如果变量是字典)。因此ctg.key
等于ctg[key]
。你试过这个:
{% for key, value in loc.items %}
{{ key|date:"d b H:i" }} - {{ value }} - {{ ctg.key }} - {{ subctg.key }} - {{ title.key }} - {{ id.key }}