flask表单操作
flask表单操作
说明:
为了能够处理 web 表单,我们将使用 Flask-WTF ,该扩展封装了 WTForms 并且恰当地集成进 Flask 中。
在 Flask-WTF 中,表单是表示成对象,Form 类的子类。一个表单子类简单地把表单的域定义成类的变量。
1.配置:
* 许多 Flask 扩展需要大量的配置,因此我们将要在 microblog 文件夹的根目录下创建一个配置文件以至于容易被编辑。这就是我们将要开始的(文件 config.py):
'''
CSRF_ENABLED = True
SECRET_KEY = 'you-will-never-guess'
'''
* 配置说明:
十分简单吧,我们的 Flaks-WTF 扩展只需要两个配置。 CSRF_ENABLED 配置是为了激活 跨站点请求伪造 保护。在大多数情况下,你需要激活该配置使得你的应用程序更安全些。
SECRET_KEY 配置仅仅当 CSRF 激活的时候才需要,它是用来建立一个加密的令牌,用于验证一个表单。当你编写自己的应用程序的时候,请务必设置很难被猜测到密钥。
2.导入Form模块和相关模块
* '''
from flask_wtf import Form
from wtforms import StringField,BooleanField
from wtforms.validators import DataRequired
'''
DataRequired:验证器只是简单地检查相应域提交的数据是否是空
* 创建表单
'''
class LoginForm(Form):
openid = StringField("openid",validators=[DataRequired()])
remember_me = BooleanField("remember_me",default=False)
'''
3.创建表单模板
* 代码
'''
{% extends "base.html" %}
{% block context %}
<h1>注 册</h1>
<form action=""method="post"name="login">
{{ form.hidden_tag() }}
<p>
请输入你的openid:<br>
{{ form.openid(size=40) }}<br>
</p>
<p>{{ form.remeber_me }}记住</p>
<p><input type="submit" value="注 册"></p>
</form>
{% endblock %}
'''
说明:form.hidden_tag() 模板参数将被替换为一个隐藏字段,用来是实现在配置中激活的 CSRF 保护
4.接受表单数据
* Flask-WTF 使得工作变得简单的另外一点就是处理提交的数据。这里是我们登录视图函数更新的版本,它验证并且存储表单数据 (文件 app/views.py):
* 代码
'''
@app.route('/login',methods=['GET','POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
flash("Login requested for openid=" + form.openid.data + "remember_me=" + str(form.remember_me.data))
return render_template('/')
return render_template("login.html",title='登陆',form=form)
'''
说明:validate_on_submit 方法做了所有表单处理工作。当表单正在展示给用户的时候调用它,它会返回 False.
flash 函数是一种快速的方式下呈现给用户的页面上显示一个消息