先要注意一点,在使用WTF的时候我们要在程序中设定一下SECRET_KEY,不然会出现"Must provide secret_key to use csrf"错误。
app.config['SECRET_KEY'] = 'xxxx'
Flask-Bootstrap在前面的文章中已经讲过了,不再重复。
后台WTF编码先看实例:
from flask.ext.wtf import Formfrom wtforms import StringField, SubmitField, SelectFieldfrom wtforms.validators import DataRequiredclass BookForm(Form): name = StringField('姓名', validators=[DataRequired()]) phone = StringField('电话', validators=[DataRequired()]) photoset = SelectField('套系', choices=[('SET1', '1'), ('SET2', '2')]) submit = SubmitField("预定") @app.route('/book/', methods=['GET', 'POST'])def book_photo(): name = None phone = None photoset = None booker = BookForm() if booker.validate_on_submit(): name = booker.name.data phone = booker.phone.data photoset = booker.photoset.data return render_template('book_photo.html', form=booker, name=name, phone=phone, photoset=photoset)
BookForm是我们自己定义的一个Form对象,里面包含了两个文本框和一个下拉选择框,很简单。
class BookForm(Form): name = StringField('姓名', validators=[DataRequired()]) phone = StringField('电话', validators=[DataRequired()]) photoset = SelectField('套系', choices=[('SET1', '1'), ('SET2', '2')]) submit = SubmitField("预定")
validators是输入检查控制器,有很多种,这里使用的是DataRequired用于必填项的检查,还有字符长度以及输入类型等等好多控制器,需要说明一下在SelectField中不要使用这些不然会报错,这个地方我没有深入研究,暂时就不使用了,哈。
book_photo()是/book/的处理函数,我们初始化了文本框的默认为空,还初始化了BookForm对象,render_template函数指定了页面和form对象。
if booker.validate_on_submit(): name = booker.name.data phone = booker.phone.data photoset = booker.photoset.data
这段处理是在表单提交后的接收参数值的处理逻辑,同时还是用
return render_template('book_photo.html', form=booker, name=name, phone=phone, photoset=photoset)
返回了name,phone和photoset值到book_photo.html页面。
下面我们就来看下页面的代码
表单页面{% extends "base.html" %}{% import "bootstrap/wtf.html" as wtf %}{% block page_content %}数据:
{% if name %} {{ name }} {% endif %}
{% if phone %} {{ phone }} {% endif %}
{% if photoset %} {{ photoset }} {% endif %}查看更多关于Flask学习笔记-在Bootstrap框架下Web表单WTF的使用_html/css_WEB-IT的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did111140