2021-05-15

jinji2模板引擎

模板

借助模板引擎,我们可以在HTML文件中使用特殊的语法来标记出变量,这类包含固定内容和动态部分的可重用文件称为模板。模板引擎的作用是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输出最终的HTML页面,这个过程被称为渲染。

Jinja2

两个概念:

​ 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表单是web应用程序的基本功能

他是HTML页面中负责数据手机的部件。表单有三部分主城:表单标签,表单域,表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器

在flask中,为了处理web表单,我们一般使用flask-WTF扩展,他封装WTForms,并且他有验证表单数据的功能

你可能感兴趣的:(python)