python-3.x - 创建 Bootstrap 可折叠 Accordion 表行,显示来自 flask sqlalchemy 占位符的动态内容

标签 python-3.x flask sqlite bootstrap-4 flask-sqlalchemy

考虑下表,它使用 flasksqlalchemysqlite 数据库中迭代数据。

假设此示例的数据是发票列表,点击每一行会打开一个可折叠的引导 Accordion ,其中包含有关所点击发票的更多信息。

<table class="table table-hover" data-toggle="table">  
<thead>
    <tr>
        <th>Date</th>
        <th>Invoice</th>         
    </tr>
</thead>

<tbody>
<tr data-toggle="collapse" data-target="#accordion" class="clickable">
{% for inv in invoices %}
   <td>
      {{ inv.number }}
   </td>
</tr>
<tr>
   <td>
      <div id="accordion" class="collapse">
         {{ inv.data }}
      </div>
   </td>
</tr>
{% endfor %}
</body>
</table>

这里的问题是只有第一行是可点击的,点击它会打开所有行而不是仅仅打开一行,而我们希望能够点击每一行并专门显示该特定行的数据。

我认为问题出在 data-target="#accordion"标签上,该标签的目标是折叠数据占位符的迭代而不是特定占位符本身。

你可以在这里看到一个例子Twitter Bootstrap Use collapse.js on table cells [Almost Done]在这里 http://jsfiddle.net/whytheday/2Dj7Y/11/但同样内容是静态的而不是动态的。

解决方案是拥有一个与目标 ID 相匹配的“动态”数据目标标签,但我不知道该怎么做。

最佳答案

要完成此任务,您必须将您的 tr 标签插入 jinja 循环,然后将动态数据目标添加 到您的 tr 标签和 动态 id 给你所有的 collapsible bootstrap accordions;所以每个 tr 标签都会指向相应的 Accordion 。代码应如下所示:

<tbody>
    {% for inv in invoices %}
        <tr data-toggle="collapse" data-target="#{{inv.number}}"  class="clickable">
            <td>
                {{ inv.number }}
            </td>
        </tr>
        <tr id="{{inv.number}}" class="no-border collapse">
            <td>
                <div>
                    {{ inv.data }}
                </div>
            </td>
        </tr>
    {% endfor %}
</tbody>

这里的想法是,由于发票编号是唯一的,您将拥有具有唯一 ID 的 Accordion 。因此,您的 tr 标签(它们也是动态生成的)的每个属性 data-target 都将指向相应的 Accordion 。

以防万一:

您会注意到我将 no-border 类添加到第二个 tr block 。这是针对您不希望 Bootstrap 表有边框的情况...这是相应的 css:

<style type="text/css">
    .table>tbody>tr.no-border>td{
        border-top: none;
    }
</style>

关于python-3.x - 创建 Bootstrap 可折叠 Accordion 表行,显示来自 flask sqlalchemy 占位符的动态内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53317916/

相关文章:

python - Python 重复单词

python - 不能定义 2 是否为质数

python - Flask 为生产和开发中 URL 不同的资源创建 URL 的方法

android - 如何在 Android 数据库表中找到数据库长度?

java - getApplicationContext() 返回 null,但在其他 Activity 中有效

python - 将查询提交到sqlite时,为什么IPython无法返回具有多个字段的记录?

python - 无法以某种自定义方式排列和打印网页中的某些字段

python - jupyter 笔记本中的 Ipython 错误,没有堆栈跟踪

python - 属性错误 : module 'jinja2.ext' has no attribute 'autoescape' while trying to use Flask-Babel

python - 使用 google-api-client 使用存储在内存中的 flask/python 中的可恢复上传将大文件从客户端上传到 GDrive