【发布时间】:2020-05-23 08:29:57
【问题描述】:
我的烧瓶表单没有得到验证。
@admin_blueprints.route('/ManageMovies',methods=['GET', 'POST'])
def ManageMovie():
form = SetShowForm(request.form)
if request.method == 'POST' and form.validate():
print(form.movie.data)
return redirect(url_for('admin.AdminHome'))
engine = create_engine('mssql+pyodbc://DESKTOP-6UNRAN0/movie_f?driver=SQL Server?
Trusted_Connection=yes')
form.movie.choices = [(movie.m_id, movie.m_name)for movie in (engine.execute('select * from
MovieMaster'))]
form.show_time.choices = [(time.s_id, time.s_time) for time in (engine.execute('select * from
ShowTime'))]
return render_template('manage_movies.html',form=form)
我的模板代码是
{% extends "master.html" %}
{% block content %}
<form method="POST">
{{ form.hidden_tag() }}
{{form.movie.label}}{{form.movie(class="form-control")}}
<br>
{{ form.show_time.label }} {{form.show_time(class="form-control")}}
<br>
{{form.price.label}} {{ form.price(class="form-control") }}
<br>
{{form.submit(class="btn btn-success")}}
</form>
{% endblock %}
我的烧瓶形式
class SetShowForm(FlaskForm):
movie = SelectField('Movie Name', choices=[])
show_time = SelectField('Set Show Time',choices=[])
price = IntegerField('Price')
submit = SubmitField("Set")
单击提交按钮后,会再次呈现同一页面,而不是输入我的 (if request.method == 'POST' and form.validate():) 语句并打印数据。我不知道出了什么问题。我正在填写所有字段。是否有任何表单验证规则。
【问题讨论】:
-
您正在动态地将选项添加到您的表单中。在尝试进行验证测试之前,您需要移动此代码。 IE。目前,当您检查验证时,您的表单对有效选择一无所知。
-
我删除了 (form.validate()) 并保留了 (request.method == POST)。代码开始正常工作。如何以及是否是一种好的做法。
标签: flask flask-wtforms