首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python Jinja2

Python Jinja2
EN

Stack Overflow用户
提问于 2016-11-17 15:06:15
回答 1查看 653关注 0票数 0

我正在学习python/jinja2 2,我发现了一个我不知道如何解决的问题。我将数据列表传递给Jinja,使用该列表,它将创建一个表。这张桌子没问题,很好用。但是,当我想将这个列表/表的一个属性传递给一个表单时,它会松开列表的引用,并且总是发送关于列表第一项的信息。让我更好地解释一下:

代码语言:javascript
运行
复制
{% 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“。似乎,当我调用一个表单时,它会取消对列表中的哪个元素的引用。

结果表- Pop up

因此,无论我单击列表的哪个元素(按钮“更改”第20行),弹出的ID始终是第一个元素。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-17 15:31:22

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

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

代码语言:javascript
运行
复制
 <div id="enquirypopup_{{ ident }}" class="modal fade in" role="dialog">...</div>

代码语言:javascript
运行
复制
<button type="button" class="btn..." data-toggle="modal" data-target="#enquirypopup_{{ ident }}">Change</button>

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

*这不是标准化行为,而且不同浏览器之间的差异,这也是不良做法的另一个原因

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40658309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档