python - 如何在烧瓶中为用户制作动态表单
问题描述
我为表中的每个用户都有编辑按钮,我只想为所有用户使用一个编辑表单。我的编辑按钮实现:
{{ button_show_dialog('open_edit_sprint_user', 'Edit','btn-primary') }}
{% call dialog_window('open_edit_sprint_user', 'Edit') %} {{ wtf.quick_form(edit_sprint_user_form, button_map={'add_user-submit': 'success'}) }} {% endcall %}
sprint_handler.py
def sprint_info(team_code, sprint_number):
edit_sprint_user_form = forms.EditSprintUserForm(prefix='edit_sprint_user')
if edit_sprint_user_form.validate_on_submit():
******do something******
return render_template('baseop/sprint_info.html', sprint=sprint,
edit_sprint_user_form=edit_sprint_user_form)
表格.py
class EditSprintUserForm(FlaskForm):
value = FloatField('Mark', validators=[DataRequired()])
description = TextAreaField('Description', validators=[DataRequired()])
submit = SubmitField('Edit')
我有一个函数可以返回我 sprint 中的所有用户get_users_in_sprint()
所以我想按下这个按钮并只用一个名为 EditSprintUserForm 的表单编辑不同的用户,但现在我只能编辑一个选定的人
解决方案
我不确定我是否理解正确,我认为关键是在单击编辑按钮时获取当前编辑的用户的用户名或id。
简单的解决方案是使用 JavaScript,您需要为表单创建一个隐藏字段以获取用户名或 id:
from wtforms import HiddenField
class EditSprintUserForm(FlaskForm):
user = HiddenField('User') # <--
value = FloatField('Mark', validators=[DataRequired()])
description = TextAreaField('Description', validators=[DataRequired()])
submit = SubmitField('Edit')
然后使用 JavaScript 创建一个事件侦听器,以便在单击编辑按钮时使用用户名或 id 填充此隐藏输入。您可以在编辑按钮中存储用户的用户名或 ID。
现在在视图函数中,您可以使用edit_sprint_user_form.user.data
.
推荐阅读
- .htaccess - Htaccess,遍历文件直到存在?
- python - 使用 Python Selenium 从多选下拉列表中读取(不选择)活动选项?
- android - 如何从 RecyclerView 适配器持有者访问数据库?
- python - 如何使 2 个 tkinter 窗口的 2 个函数更加简洁?
- javascript - mongodb:如何在聚合操作中使用组运算符中的变量?
- csv - Miller - Ignore valid field names when using -N
- 3d - JavaFX 8 3D 深度测试取决于添加的订单对象
- spring - 基于实体变量的 URL 块
- html - 无法在按钮内居中文本
- javascript - 使用 IntersectionObserver 在 React 中滚动时突出显示侧边栏导航项的问题