【问题标题】:Flask argument of type '_RequestGlobals' is not iterable'_RequestGlobals' 类型的 Flask 参数不可迭代
【发布时间】:2017-08-01 08:18:37
【问题描述】:

当我尝试使用 Flask-WTForms 时,我按照以下步骤操作:

from flask_wtf import Form
from wtforms import StringField, PasswordField
from wtforms.validators import DataRequired, Email

class EmailPasswordForm(Form):
    email = StringField('Email', validators=[DataRequired(), Email()])
    password = PasswordField('Password', validators=[DataRequired()])

@app.route('/form',methods=['GET','POST'])
def email_form():
    form = EmailPasswordForm()
    return render_template('form.html',
       title = 'Sign In',
       form = form)

然后我得到 TypeError: '_RequestGlobals' 类型的参数是不可迭代的。

这里是form.html:

<html>
<head>
    <title>Login Page</title>
</head>
<body>
    <form action="{{ url_for("form") }}" method="POST">
        <input type="text" name="email" />
        <input type="password" name="password" />
        {{ form.csrf_token }}
    </form>
</body>

【问题讨论】:

  • 您的 form.html 文件可能有问题。请在此处发布
  • 你解决过这个问题吗?

标签: python flask flask-wtforms


【解决方案1】:

这是由于您的视图函数的名称。改个名字就行了。它应该可以正常工作。

@app.route('/test',methods=['GET','POST'])
def my_form(): # See this line
    form = EmailPasswordForm()
    return render_template('form.html',
       title = 'Sign In',
       form = form)

【讨论】:

  • 我只是修改了我的问题描述。但它似乎仍然无法正常工作。
  • 注意我也改变了路由 url :p
猜你喜欢
  • 2021-07-30
  • 2019-04-15
  • 2019-08-10
  • 1970-01-01
  • 2012-12-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-31
  • 2021-09-18
相关资源
最近更新 更多