在循环期间使用Jinja2作为unqiue div ID?

时间:2016-11-08 11:52:21

标签: python flask jinja2

我似乎无法找到解决这个问题的方法..

我有一个模板,它从数据库中的几个不同的表中获取输入。这些表包含x量的信息。为了只显示一些关于点击的信息我使用一些javascript来隐藏它所包含的div。但是,div id = {{row.id}}在jinja的forloop期间被填充。我认为它起初工作正常,直到我意识到{{row.id}}可以与不同的{{row.id}}相同,如果它来自不同的表... exmaple;

{% for row in packages %} # Packages is one of the tables
<div id="{{ row.id }}">
{{ row.price }}
{{ row.date }}
..etc
</div>
<button onClick="toggleDiv("{{ row.id }}">Show Content</button>

other stuff in between...

{% for entry in services %} # Services is one of the tables
<div id="{{ entry.id }}"> # is it possible to do something like entry.id + {{ loop.index }} ? I'm not positive that would make it unique tho.
{{ entry.price }}
{{ entry.date }}
..etc
</div>
<button onClick="toggleDiv("{{ entry.id }}">Show Content</button>

所以我遇到的问题是row.id == entry.id是可能的,因为它们来自不同的表。我试图找出是否可以使用带有随机唯一数字的大型列表来绘制div id?我不确定如何让jinja完成这项工作?我在运气好吗?这是这个模板的最后一个主要障碍,所以我想找出一些解决方案..有什么想法吗?

1 个答案:

答案 0 :(得分:5)

为什么不用html ID作为表名前缀?

{% for row in packages %} # Packages is one of the tables
<div id="package_{{ row.id }}">
{{ row.price }}
{{ row.date }}
..etc
</div>
<button onClick="toggleDiv("package_{{ row.id }}")">Show Content</button>


{% for entry in services %} # Services is one of the tables
<div id="service_{{ entry.id }}"> 
{{ entry.price }}
{{ entry.date }}
..etc
</div>
<button onClick="toggleDiv("service_{{ entry.id }}")">Show Content</button>