1.bootstrap安装
1
| pip install flask-bootstrap
|
2.初始化bootstrap
1 2 3
| from flask_bootstrap import Bootstrap ... bootstrap = Bootstrap(app)
|
3.制作自己的基模板
初始化bootstarp以后就可以继承bootstrap文件的基模板了
1 2 3
| {% extends "bootstrap/base.html" %} {% block title %}Flasky{% endblock %} ...
|
主要用Flask-WTF包
Flask-WTF是wtforms的一个扩展,两个包都要引入。
5.设置SCRF保护
1 2
| app = Flask(__name__) app.config['SECRET_KEY'] = 'hard to guess string'
|
跟django的套路差不多,都要继承一个Form父类,
1 2 3 4 5 6
| from flask_wtf import Form from wtforms import StringField, SubmitField from wtforms.validators import Required class NameForm(Form): name = StringField('What is your name?', validators=[Required()]) submit = SubmitField('Submit')
|
7.模板
可以直接写html
1 2 3 4 5
| <form method="POST"> {{ form.hidden_tag() }} {{ form.name.label }} {{ form.name() }} {{ form.submit() }} </form>
|
或者直接用Flask-bootstrap的辅助函数一次生产这个form
1 2
| {% import "bootstrap/wtf.html" as wtf %} {{ wtf.quick_form(form) }}
|
8.处理表单
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)
|
methods里面加入POST请求。如果没有指定,只能路由GET请求。
如果提交的数据通过验证,则validate_on_submit返回True,把name字段清空,并且把数据传到模板里面去。