python - 表单的多个实例在提交时统一
问题描述
我有一个表格,它必须有一些字段多次。这就是为什么我将所有应该出现多次的字段提取到类AdvandcedGame
中。所有唯一的字段都在Form
类中。该类Form
也是唯一一个带有提交按钮的类。当我按下提交时,AdvancedGame
(A,B,C)的所有实例都是统一的(A,A,A)。你能告诉我为什么以及如何解决这个问题吗?
这是尽可能简化的代码
应用程序.py
from flask import Flask, render_template
from flask_restful import Resource, Api
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
class AdvandcedGame(FlaskForm):
name = StringField('name')
class Ui(FlaskForm):
submit = SubmitField('submit')
app = Flask(__name__)
api = Api(app)
app.config['JSON_SORT_KEYS'] = False
app.config['SECRET_KEY'] = "303"
@app.route('/', methods=['GET', 'POST'])
def root():
form = Ui()
games = [AdvandcedGame(name='A'), AdvandcedGame(name='B'), AdvandcedGame(name='C')]
for game in games:
app.logger.info(game.name.data)
# outputs
# A
# B
# C
if form.validate_on_submit():
for game in games:
app.logger.info(game.name.data)
# outputs
# A
# A
# A
return render_template('index.html', form=form, games=games)
# Run the application
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000, debug=True)
模板/index.html
<html>
<head>
</head>
<body>
{% if form is defined %}
<form method="POST" action="{{ form.url }}">
{{ form.csrf_token }}
<table>
<tr>
<td>
{{ games[0].name.label }}
</td>
{% for game in games %}
<td>
{{ game.name }}
</td>
{% endfor %}
</tr>
<tr>
<td colspan=3>
{{ form.submit}}
</td>
</tr>
</table>
</form>
{% endif %}
</body>
</html>
解决方案
推荐阅读
- sql - Amazon Athena:将 bigint 时间戳转换为可读时间戳
- powerbi - 如何使用 Power BI DAX 从移动表中计算每天的库存?
- docker - 您将如何在 IPFS 上运行容器化应用程序
- xamarin - 试图在列表视图(MVVM)中获取选择器的 selectedItem 的值
- java - java 和 Angular 项目如何工作和相互通信?
- cordova - PhoneGap 插件推送不适用于 iOS
- python - 如何使用内联列表更新作为函数参数?
- linux - GNUplot 在日期绘图时抛出错误
- cordova - 为cordova-android@~7.0.0 使用cordova-fetch
- java - 带有 Spring Boot 应用程序的 Docker 卡在 RaspberryPi 上的 AnnotationConfigServletWebServerApplicationContext