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 函数是一种快速的方式下呈现给用户的页面上显示一个消息

posted @ 2018-12-28 16:10  jaysonzxk  阅读(439)  评论(0编辑  收藏  举报