flask 表单

来源:互联网 发布:实参数组类型 编辑:程序博客网 时间:2024/06/05 14:39

1.防止跨站请求伪造保护

app = Flask(__name__)app.config['SECRET_KEY'] = 'hard to guess string'

app.config用来存储整个应用的配置变量,它是一个字典

2.创建表单类
每个web表单都由继承自Form的类表示,每个字段用对象表示。

from flask.ext.wtf import Formfrom wtforms import StringField, SubmitFieldfrom wtforms.validators import Requiredclass NameForm(Form): # 新建了一个NameForm的表单    name = StringField('What is your name?', validators=[Required()])# 表单的第一个字段,validators是验证函数的参数    submit = SubmitField('Submit') # 表单的第二个字段

3.在视函数中处理表单

@app.route('/', methods=['GET', 'POST']) #把这个函数处理成请求处理程序,默认为getdef index():    name = None    form = NameForm()    if form.validate_on_submit():# 如果被require()验证,则返回True.为True则处理表单处理的数据,为False则重新渲染表单        name = form.name.data # 获得用户所输入的数据        form.name.data = ''#重新将表单中的数据清空    return render_template('index.html', form=form, name=name)

4.渲染表单类
手动渲染

<form method="POST">{{ form.hidden_tag() }}{{ form.name.label }} {{ form.name(id='my-text-field') }}{{ form.submit() }}</form>

bootstrap渲染

{ % import "bootstrap/wtf.html" as wtf % }{ % block page_content % }{{ wtf.quick_form(form) }}<div class="page-header"><h1>Hello, { % if name % }{{ name }}{ % else % }Stranger{ % endif % }!</h1></div>{ % endblock % }