上海住房和城乡建设部网站首页,免费空间贴吧,开发网站需要租服务器,wordpress怎样电影导航简介
Jinja2是Flask框架默认支持的模板引擎#xff0c;是python的web项目中被广泛应用的一种模板引擎#xff0c;jinja2的作者与Flask是同一个人。 jinja2具有以下特点#xff1a; 非常灵活#xff0c;提供了控制结构、表达式与继承等 性能好 可读性强
渲染一个模板是python的web项目中被广泛应用的一种模板引擎jinja2的作者与Flask是同一个人。 jinja2具有以下特点 非常灵活提供了控制结构、表达式与继承等 性能好 可读性强
渲染一个模板通过render_template方法即可 语法
引入渲染函数
使用之前需要先通过import 导入
from flask import render_template
注要将模板文件放置在项目根目录的 templates文件夹中 在Jinja2中存在三种语法 变量取值 {{ }} 控制结构逻辑代码 {% %} 注释 {# #} 示例1变量取值 {{ }}
app.route(/tmp)
def template_test():name 我是字符串num 1mylist [1,2,3,4]mydict{name:张三,age:33}mytuple (1,2,3,4)return render_template(template.html,namename,numnum,mylistmylist,mydictmydict,mytuplemytuple) template.html 模板文件
!DOCTYPE html
html langen
head
/head
bodyp字符串{{ name }}/pp数字{{ num }}/pp列表{{ mylist }}/pp列表中的第二个元素{{ mylist[1] }}/pp字典{{ mydict }}/pp字典的name{{ mydict[name] }}/pp元组{{ mytuple }}/pp元组的第2个元素{{ mytuple[1] }}/p
/body
/html 调用结果 示例2控制结构 {% %}
!DOCTYPE html
html langen
head
/head
bodyp字符串{{ name }}/pp数字{{ num }}/pp列表{{ mylist }}/pp列表中的第二个元素{{ mylist[1] }}/pp字典{{ mydict }}/pp字典的name{{ mydict[name] }}/pp元组{{ mytuple }}/pp元组的第2个元素{{ mytuple[1] }}/p{% if name张三 %}条件满足我是张三{% else %}条件不满足{% endif %}循环列表数据{% for i in mylist %}{{ i }}{% endfor %}
/body
/html 调用结果 示例3注释 {# #}
{# 循环列表数据#}
{% for i in mylist %}{{ i }}
{% endfor %} 过滤器
有些时候需要对要在模板中的变量值做一些特殊处理比如首字母大写去掉前后空格、字符串拼接等等这时就可以使用过滤器。 过滤器的使用
通过 | 来使用过滤器与Linux中的管道类似 例如将字符串的首字母大写
p{{ name | capitalize }}/p 常用的过滤器
过滤器说明safe渲染时值不转义capitalize首字母大写其他字母小写lower所有字母小写upper所有字母大写title值中每个单词首字母大写trim去除首尾空格striptags渲染时删除掉值中所有HTML标签 join拼接字符串 replace替换字符串中的值 round对数据进行四舍五入 示例代码
app.route(/tmp2)
def template_test2():name harRYreturn render_template(template2.html,namename) template2.html
!DOCTYPE html
html langen
head
/head
body{# 首字母大写 #}p{{ name | capitalize }}/p{# 单词全小写 #}p{{ Hello World! | lower }}/p{# 去除首尾空格 #}p{{ Hello World! | trim }}/p{# 四舍五入取整 #}p{{ 1.26 | round }}/p{# 四舍五入保留2位小数取整 #}p{{ 1.2666 | round(2) }}/p
/body
/html 调用 自定义过滤器
当遇到现有的过滤无法满足我们的需求时这时就需要我们自定义一个过滤器了 自定义过滤器有两种方式
方式1app.template_filter()
# 第一种方式用作计算字符串长度
app.template_filter()
def str_len(args):return len(args) 方式2 先定义方法后采用 app.jinja_env.filters
# 第二种方式 去除字符串中的空格
def replace_space(args):return args.replace( , )app.jinja_env.filters[replace_space] replace_space 使用以上自定义的过滤器
app.route(/tmp3)
def template_test3():name harRYaaadfs jklf jffff return render_template(template3.html, namename,aaaaaa) template3.html
!DOCTYPE html
html langen
head
/head
bodyp{{ name | str_len }}/pp{{ aaa | replace_space }}/p
/body
/html 输出 程序猿与投资生活实录已改名为 程序猿知秋WX 公众号同款欢迎关注!