python - 在另一个路由 Flask 中进行表单验证

标签 python flask flask-wtforms

我有一个 flask wtform。我能够在实例化的路径中验证表单。但我想从另一条路线验证它。在不使用 session 变量的情况下,有没有其他方法可以从其他路径访问表单对象?

form_class.py

class Fruit ( Form):
    Fruit = SelectField ( choices = [ ( 0,"Select Fruit"), ( 1,'Apple'), (2,'Grape'), (3,'Orange') ], coerce = int, id="Fruit", validators = [Required()])  

views.py:

@app.route('/fruit',  methods = ['GET', 'POST'])
def fruit():
    form = Fruit()
    if form.validate_on_submit():
       return render_template("output.html")
    return render_template("name.html", form = form)

name.html

<form action="" method="POST">
      {{ form.hidden_tag() }}
      {{form.Fruit}}
      {{form.Fruit.errors}}
      <input type = "submit">
</form>

上面的代码完全可以正常工作。但我想做类似下面的事情:

@app.route('/fruit')
def fruit():
    form = Fruit()
    '''if form.validate_on_submit():
       return render_template("output.html")'''
    return render_template("name.html", form = form)

@app.route('/fruit_submit', methods = ['GET', 'POST'])
def fruit_submit():
    print request.form
    if form.validate_on_submit():
       return render_template("output.html")

尝试上述代码时出现以下错误。

NameError: global name 'form' is not defined

最佳答案

你必须用 request.form 调用 Fruit 类

@app.route('/fruit_submit', methods = ['GET', 'POST'])
def fruit_submit():
    print Fruit(request.form)
    if Fruit(request.form).validate_on_submit():
       return render_template("output.html")

关于python - 在另一个路由 Flask 中进行表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39765548/

相关文章:

python - 在 Flask 中是否有一种方法可以忽略对不存在的路由的请求

angularjs - Flask 应用程序中的 js 文件保存在哪里?

python - 使用来自 SQLAlchemy 对象的数据在 flask 中预填充 WTforms

flask - Flask:validate_on_submit始终为false,form.errors为空

python - 如何使用 Flask WTF 获取 QuerySelectField 当前值

python - 如何在 tty.setcbreak() 之后重新打开控制台回显

python - 如何在 jython 中设置 numpy

python - Scrapy 输出 [ 到我的 .json 文件中

python - flask 棉花糖/SqlAlchemy : Serializing many-to-many relationships

python - flask /WTF/SQLAlchemy : using QuerySelectMultipleField with Form. populate_obj()