Flask 不接受 WTForms 输入
Flask does not take WTForms input
我正在尝试使用带有 WTForms 的烧瓶创建一个应用程序。
在 controller.py 我有:
@mod_private.route('/portfolio/', methods=['GET', 'POST'])
@login_required
def portfolio():
print "in portfolio" # I read this
form = CreateCoinsForm(request.form)
if request.method == 'POST' and form.validate_on_submit():
print form.coins.data #I cannot take this value
return render_template("private/portfolio.html",form=form)
return render_template("private/portfolio.html",form=form)
在forms.py:
class CreateCoinsForm(Form):
coins = IntegerField('coins',
[DataRequired('num required'),
NumberRange(min=0, max=10)])
和模板
<form method="post" action="/private/portfolio/" accept-charset="UTF-8" role="form">
<p> {{ form.coins }}</p>
<p><input type=submit value=Generate>
</form>
我的问题,正如我在代码中所写的那样,我无法检索模板中插入的字符串。
您的问题表明您在表单上使用了内置的 CSRF 保护,而您的表单实际上未通过验证,因为您没有包含 CSRF 令牌。
尝试像这样调整您的模板:
<form method="post" action="/private/portfolio/" accept-charset="UTF-8" role="form">
{{ form.hidden_tag() }}
<p> {{ form.coins }}</p>
<p><input type=submit value=Generate>
</form>
我正在尝试使用带有 WTForms 的烧瓶创建一个应用程序。
在 controller.py 我有:
@mod_private.route('/portfolio/', methods=['GET', 'POST'])
@login_required
def portfolio():
print "in portfolio" # I read this
form = CreateCoinsForm(request.form)
if request.method == 'POST' and form.validate_on_submit():
print form.coins.data #I cannot take this value
return render_template("private/portfolio.html",form=form)
return render_template("private/portfolio.html",form=form)
在forms.py:
class CreateCoinsForm(Form):
coins = IntegerField('coins',
[DataRequired('num required'),
NumberRange(min=0, max=10)])
和模板
<form method="post" action="/private/portfolio/" accept-charset="UTF-8" role="form">
<p> {{ form.coins }}</p>
<p><input type=submit value=Generate>
</form>
我的问题,正如我在代码中所写的那样,我无法检索模板中插入的字符串。
您的问题表明您在表单上使用了内置的 CSRF 保护,而您的表单实际上未通过验证,因为您没有包含 CSRF 令牌。
尝试像这样调整您的模板:
<form method="post" action="/private/portfolio/" accept-charset="UTF-8" role="form">
{{ form.hidden_tag() }}
<p> {{ form.coins }}</p>
<p><input type=submit value=Generate>
</form>