我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第2篇文章,点击查看活动详情
最近开始搞flask的表单,网上找到了这个东西。有一说一这个确实挺好用,但是感觉官方文档 有点不靠谱,这里我总结了一下flask_wtf如何快速入门和进行基本操作(注意:中横线和下划线区分清楚) 首先安装
pip install flask-wtf
然后在flask中初步import
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired
下一步是创建表单(官方教程里面的)
class MyForm(FlaskForm):
name = StringField('name', validators=[DataRequired()])
如果你看到是官方教程,里面的下一步是
<form method="POST" action="/">
{{ form.csrf_token }}
{{ form.name.label }} {{ form.name(size=20) }}
<input type="submit" value="Go">
</form>
(submit.html↑)
然后在app.py中传参
@app.route('/submit', methods=['GET', 'POST'])
def submit():
form = MyForm()
if form.validate_on_submit():
return redirect('/success')
return render_template('submit.html', form=form)
此时你运行,会发现报错,说啥csrf token missing
欸~ 你猜怎么着?在官方教程添加submit.html前面,有一行In addition, a CSRF token hidden field is created automatically.
这就是说要添加CSRF密码/密钥,防止CSRF攻击(防止伪造请求之类的) 所以在
app = Flask(__name__)
后面添加
app.config["SECRET_KEY"] = "pwy"
(handsomepwy自己瞎填)
此时如果你提交,会报错504,也就是没有允许提交表单的POST方法,可是你明明添加了呀?
这是因为官方教程中form的action是 /,而不是submit
这里改好之后就OK了
下一步就是获取表单中参数的值了
if form.validate_on_submit():
namename = form.name.data
此时namename变量就是你接收到表单的数据啦~
那么这次教程就结束了,希望能帮助到你,谢谢。 好像有点短,主要是我在搞一个flask_wtf的迷你实战,后面搞一篇大一点的,包括不同的input类型,如何接入html模板之类的,敬请期待