Python Jinja2对于rang

2024-04-26 04:45:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我在学习python/jinja2,发现了一个我不知道如何解决的问题。我把一个数据列表传递给Jinja,然后用这个列表创建一个表。这张桌子还可以,可以用。但是当我想把这个列表/表的一个属性传递给一个表单时,它会丢失列表的引用,并且总是发送关于列表第一项的信息。我来解释一下:

{% for value in listresult %}
<tr>
<td><center>{{ value.date }}</center></td>
{% set ident = value._id%}
<td>{{ident}}</td>
<td>
<form name="info_form" class="form-inline" action="/changetime1" method="post">
    <div id="enquirypopup" class="modal fade in" role="dialog">
        <div class="modal-dialog">
            <!-- Modal content-->
            <div class="modal-content row">
                <div class="modal-header custom-modal-header">
                    <h4 class="modal-title">{{ident}}</h4>
                </div>
            </div>
        </div>
    </div>
</form>
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#enquirypopup">Change</button>
</td>
{% endfor %}

此时的表创建是正确的。在第5行中,它打印表中每行的一个ID(不同的ID)。但是当我要求打印同一个变量时,在第14行,它总是打印列表第一个元素的“ident”。似乎当我调用一个表单时,它会丢失我们在列表中的元素的引用。在

Result Table - Pop up

所以,不管我单击列表中的哪个元素(按钮“Change”第20行),弹出窗口中出现的ID总是第一个元素。在

有什么想法吗?在


Tags: indivformid元素表单列表value
1条回答
网友
1楼 · 发布于 2024-04-26 04:45:54

问题在于HTML元素id。因为您要用相同的ID(#enquirypopup)创建每个表单,所以浏览器只返回页面中的第一个元素,即第一次看到#enquirypopup.ID*。在

一个快速的解决方法是使用jinjaident变量设置id,如下所示:

 <div id="enquirypopup_{{ ident }}" class="modal fade in" role="dialog">...</div>

以及

^{pr2}$

但还有无数其他解决方案使用不同的选择器。在


*这不是标准化的行为,并且在不同的浏览器中有所不同,这是bad practice的另一个原因

相关问题 更多 >