借助模板引擎,我们可以在HTML文件中使用特殊的语法来标记出变量,这类包含固定内容和动态部分的可重用文件称为模板。模板引擎的作用是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输出最终的HTML页面,这个过程被称为渲染。
jinja2:是python下一个被广泛应用的模板引擎,是python实现的模板语言,它的设计思想来源于Django的模板引擎,
并扩展了其语法何一系列强大的功能,其是Flask内置的模板语言
模板语言:是一种设计来自动生成文档的简单的文本格式看,在模板语言中,一般都会吧一些变量传给模板,替换木板的特定位置上预 先定义好的站位变量名
flask提供的render_template函数封装了该函数引擎
render_template 函数的第一个参数是模板的文件名,后面的参数是键值对,表示模板中的变量对应的真实值
使用{ {# #}}进行注释
{#{ {name}}#}
{ {}}来表示变量名,这种{ {}}头发叫做变量代码块
{ {post.title}}
jinja2模板中的变量代码块是可以任意的python类型或者对象。只要他能够被python的str()方法转换为一个字符串就可以,比如,可以通过下面的方法显示一个字典或者列表中的某个元素
{%% }定义的控制代码块,可以实现一些语言层次的功能,比如虚幻或者if语句
{% for my in my_list %}
{% if my>3 %}
{
{ my }}
{% endif %}
{% endfor %}
过滤器的本质就是函数,有时候我们不仅仅只需要输出变量的值,我们还需要修改变量表示的显示,甚至格式化,运算等等,而在模板中是不能直接调用python中的某些方法,那么这就用到了过滤器
使用方式:
过滤器的使用方式:变量名|过滤器
如果没有任何参数传给过滤器,则可以把括号省略掉
如:``,这个这个过滤器的基本使用:把变量variable的值的首字母转换为大写,其他字母转换为小写
在jinja2中,过滤器是可以支持链式调用的,示例如下:
1.abs:返回一个数的绝对值
2.default:如果当前变量没有值或字段,则展示默认值
3.转义过滤器:如果后端出过来的值含html标签,可以控制是否视为html标签执行或者当成字符串处理
escape或e:转义符:会将<、>等html标签符号转义成html中的可展示符号(此功能jinja2是默认开启的)
autoescape off/on:控制关闭或开启默认的自动转义
手动加转义
safe:如果开启了全局转义,那么safe过滤器将会将变量关掉转义、
4、获取序列的首尾的值
first:返回序列的第一个元素
last:获取序列最后一个值
5、format过滤器:格式化字符串,和python的一样
6、length:返回序列或字典的长度
7、join:和python的join一样
8、数据类型转换(后台传到模板的数据很可能不是统一的,而模板里面可能会涉及到计算):int、float、string
9、大小写转换:lower:转小写、upper:转大写
10、replace:替换字符串
11、truncate:截取指定长度的字符串、
12、striptags:删除字符串中所有的html标签,如果出现多个空格,将替换成一个空格
13、wordcount:计算字符串中单词的个数
web表单是web应用程序的基本功能
他是HTML页面中负责数据手机的部件。表单有三部分主城:表单标签,表单域,表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器
在flask中,为了处理web表单,我们一般使用flask-WTF扩展,他封装WTForms,并且他有验证表单数据的功能