模版调用
from flask import render_template
@app.route('/')
def index():
return render_template('index.html')
变量过滤器
{{ namd|capitalize}}
- safe 渲染值时不转移
- capitalize 把值的首字母转换成大写,其它字幕转换成小写
- lower 把值转换成小写形式
- upper 把值转换成大写形式
- title 把值中每个单词的首字母都转换成大写
- trim 把值的首位空格去掉
- striptags 渲染之前把值中所有的HTML标签都删掉
控制结构
{% if user %}
xxxxx
{% else %}
xxxxxx
{% endif %}
{% for one in list %}
xxxxxxxxxxxx
{% endfor %}
{% macro function(args) %} #宏
xxxxxxx
{% endmacro %}
xxxxxxxxxx
{{function(args)}}
引用(导入)
{% import 'temp.html' as temp %} #代码import
{% include 'common.html' %} #模版插入
{% extends 'base.html' %} #模版继承
使用bootstrap
from flask.ext.bootstrap import Bootstrap
@app.route('/user/<name>')
def user(name):
return render_template('user.html', name=name)
{% extends 'bootstrap/base.html' %}
{% block xxx %} #block标签替换
#{{ super() }} #当模版中block xxx中非空,就需要super()来获取原来的内容
{% endblock %}
定义错误页面
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404
链接 url_for()
用视图函数的名字作为关键字:
url_for('index') # /
url_for('user', name='john', _external=True) #http://localhost:5000/user/john
url_for('index', page=2) # /?page=2
表单类
from flask.ext.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')
WTForms支持的HTML标准字段
StringField #文本字段
TextAreaField #多行文本字段
PasswordField #密码文本字段
HiddenField #隐藏文本字段
DateField #文本字段,值为datetime.date格式
DateTimeField #文本字段,值为datetime.datetime格式
IntegerField #文本字段,值为整数
DecimalField #文本字段,值为decimal.Decimal
FloatField #文本字段,值为浮点数
BooleanField #复选框,值为True和False
RadioField #一组单选框
SelectField #下拉列表
SelectMultipleField #下拉列表,可选择多个值
FileField #文件上传字段
SubmitField #表单提交按钮
FormField #把表单作为字段嵌如另一个表达那
FieldList #一组指定类型的字段
WTForms验证函数
Email #验证电子邮件地址
EqualTo #比较两个字段的值;常用于要求输入两次密码进行确认的情况
IPAddress #验证IPv4网络地址
Length #验证输入字符的长度
NumberRange #验证输入的值在数字范围内
Optional #无输入值时跳过其他验证函数
Required 确保字段中有数据
Regexp #使用正则表达式验证输入值
URL #验证URL
AnyOf #确保输入值在可选值列表中
NomeOf #确保输入值不在可选值列表中
Bootstrap渲染Flask-WTF表单
{% import 'bootstrap/wtf.html' as wtf %}
{{ wtf.quick_form(form) }}
使用Flask-SQLAlchemy
from flask.ext.sqlalchemy import SQLAlchemy
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
db = SQLAlchemy(app)