烧瓶形式未得到验证

时间:2020-05-23 08:29:57

标签: flask flask-wtforms

我的烧瓶表格未得到验证。

 @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")

单击我的提交按钮后,将再次渲染同一页面,而不是输入我的(如果request.method =='POST'和form.validate():)语句并打印数据。我不知道出了什么问题。我正在填补所有领域。表单验证是否有任何规则。

2 个答案:

答案 0 :(得分:0)

我相信您需要使用:

if form.validate_on_submit():

您也不需要检查“ POST”,因为validate_on_submit也会这样做。

答案 1 :(得分:0)

尝试

 @admin_blueprints.route('/ManageMovies',methods=['GET', 'POST'])
def ManageMovie():

form = SetShowForm()

if form.validate_on_submit():

  print(form.movie.data)

  return redirect(url_for('admin.AdminHome'))

return render_template('manage_movies.html',form=form)

然后直接在setShowForm()中设置选择值