gpt4 book ai didi

python - 使用 Flask、Jinja2 模板渲染一个可编辑的表格,然后处理返回的表格数据

转载 作者:太空狗 更新时间:2023-10-29 20:42:07 31 4
gpt4 key购买 nike

我正在使用 Flask 和 Jinja2,我需要制作一个包含多行的可编辑表格。

这是表格的样子:

img

这里是 HTML:

<form action="/support/team-members-update" method="post">
<table>
<tbody><tr>
<th>Name</th>
<th>Id</th>
<th>Inbox Share</th>
</tr>
<tr>
<td>Ben</td><td>55555</td><td><input type="text" name="share_55555" value="0"></td></tr> <tr>
<td>Steve</td><td>66666</td><td><input type="text" name="share_66666" value="1"></td></tr> <tr>
<td>Harry</td><td>77777</td><td><input type="text" name="share_77777" value="1"></td></tr> <tr>
<td>Sally</td><td>88888</td><td><input type="text" name="share_88888" value="1"></td></tr></tbody></table>
<button type="submit">Send</button>
</form>

我目前的实现是在 Lua 中,我在其中硬编码一堆字符串并手动将发布数据连接到本地 Lua 类型(有趣!)。如果必须,我也可以在 Python 中手动处理表单数据,但我想可能有更好的解决方案。


我已经对 WTForms 进行了一些探索,但没能让它正常工作。

我确实找到了 FieldList ,但这似乎处理的是同一字段的列表,而不是具有完全相同字段的多行。

我还找到了TableWidget ,但文档很少,我无法弄清楚如何实现它以了解它是否可以实现我想要做的事情。

最佳答案

FieldList 可以工作,您需要列出 FormField .像这样指定您的 FormField:

class MemberForm(Form):
name = StringField('name')
member_id = StringField('member_id')
inbox_share = IntegerField('inbox_share')
# etc.

class TeamForm(Form):
title = StringField('title')
teammembers = FieldList(FormField(MemberForm))

然后您可以在 View 函数中从您的数据库创建表单,如下所示:

@app.route('/support/team-members-update', methods=['GET','POST'])
def update_team_members():
teamform = TeamForm()
teamform.title.data = "My Team" # change the field's data
for member in DB.get('teammembers') # some database function to get a list of team members
member_form = MemberForm()
member_form.name = member.name # These fields don't use 'data'
member_form.member_id = member.id
member_form.inbox_share = member.share

teamform.teammembers.append_entry(member_form)

return render_template('edit-team.html', teamform = teamform)

然后在模板中,您可以在创建表格行时遍历 teammembers 中的每个项目:

<html>
<head>
<title>Edit Team Members</title>
</head>
<body>
<h1>Edit Team</h1>
<div>
<form action="" method="post" name="teamform">
{{ teamform.hidden_tag() }}
Team Title: {{ teamform.title }}<br>
<div>
<table>
<tr>
<th> Name </th>
<th> ID </th>
<th> Inbox Share </th>
</tr>
{% for member in teamform.teammembers %}
<tr>
<td>{{ member.name }}</td>
<td>{{ member.member_id }}</td>
<td>{{ member.inbox_share }}</td>
</tr>
{% endfor %}
</table>
</div>
<p><input type="submit" name="edit" value="Send"></p>
</form>
</div>
</body>
</html>

关于python - 使用 Flask、Jinja2 模板渲染一个可编辑的表格,然后处理返回的表格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504067/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com