- 模板引擎:Jinja2
- 渲染模板函数:render_template(),参数为HTML文件(文件路径是相对templates文件夹的)和传入参数
- 在模板中自定义变量:set标签(也可以将一部分模板数据定义为变量
- Flask的内置变量:config、request、session、g
- 设置模板全局变量(用于多个模板都需要使用同一变量的情况):装饰器——app.context_processor,注册一个模板上下文处理函数,返回包含变量键值对的字典
- Jinja2常用的内置全局函数:range、lipsum、dict等
- Flask内置全局函数:url_for、get_flash_message
- 自定义全局函数:app.template_global装饰器可直接将函数定义为模板全局函数
- 过滤器(filter),可以过滤单个变量,也可以作用与一部分模板数据
- 自定义过滤器:app.template_filter()装饰器
- 测试器,是用来测试变量或表达式返回布尔值的函数,用is链接变量和测试器
- 自定义测试其:app.template_test()装饰器
- 模板环境对象:在Jinja2中,渲染行为由jinja2.Enviroment类控制,所有的配置项、上下文变量、全局函数、过滤器、测试器都存储在Enviroment实例上,与Flask结合后,使用flask提供的Enviroment对象,它存储在app.jinja_env属性上,然后可以:
- 自定义全局对象:app.jinja_env.globals[‘bar’] = bar
- 自定义过滤器: app.jinja_env.filters
- 自定义测试其: app/jinja_env.tests
- 局部模板,为了和普通模板区分,局部模板通常用下划线开头
- 宏,类似函数,通常单独把宏存储在一个文件中,命名为macros.html或_macros.html
- 模板的继承:块的开始和结束用block和endblock标签来声明
- 声明扩展模板:{% extends ‘base.html’ %}
- 模块的覆盖:在子模块中定义同名的模块时,会覆盖父模块的内容
- 追加内容:{{ super }}
- 加载静态文件:用url_for获取静态文件URL,默认URL规则为:/static/path:filename,例如:url_for(‘static’, filename=‘abc.jpg’)
- 消息闪现:flash函数,使用flash发送的消息会存储在session中,需要在模板中使用全局函数get_flash_message()获取消息并显示出来
注:因为要存储在session中,所以需要设置密钥
20200718《Flask进阶》——模板
最新推荐文章于 2024-04-08 01:31:34 发布