Flask-WTF和Flask-Bootstrap自动生成一个漂亮的Form


这是本文的续篇。
Flask-WTF:验证使用CSRF对策创建Form的Form和Flask扩展输入项

安装

1
$ pip install flask-wtf flask-bootstrap

关于Flask-WTF补充

  • 您可以轻松创建一个不错的表单(表单html生成wtf.quick_form(form),验证form.validate_on_submit())

  • 简易CSRF措施

  • 什么是CSRF:
    请求伪造(CSRF:跨站点请求伪造)是Web应用程序的重要过程,例如互联网购物的最终付款和提款,其触发是通过踩踏另一个站点上准备的内容上的陷阱链接来触发的。用户致电。
    每次攻击访问合法Web内容以维护会话时,此攻击都会利用浏览器向Web服务器发送某些cookie,基本身份验证数据或摘要身份验证数据的属性。

    CSRF措施:
    阻止Web应用程序接受基于除用户之外的任何人伪造的内容的HTTP请求。
    嵌入并提交一个其他人难以估计的随机值,作为表单中的隐藏字段,并使表单返回

    易于使用(也使用Flask-Bootstrap)

    app.py

    1
    2
    3
    4
    from flask import Flask

    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'super secret' # CSRF対策でtokenの生成に必要

    创建表单

    app.py

    1
    2
    3
    4
    5
    6
    7
    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    from wtforms.validators import Required

    Class NameForm(FlaskForm):
        name = StringField('name:', validators=[Required()])
        submit = SubmitField('Submit')

    创建视图

    form.html

    1
    2
    {% import "bootstrap/wtf.html" as wtf %}
    {{ wtf.quick_form(form) }}

    表单处理示例:

    app.py

    1
    2
    3
    4
    5
    6
    7
    8
    @app.route('/', methods=['GET', 'POST'])
    def index():
        name = None
        form = NameForm()
        if form.validate_on_submit():
            name = form.name.data
            form.name.data = ''
        return render_template('index.html', form=form, name=name)
    • 实现示例(github存储库)

    • 关于WTF表格(Flask官方文档)