模板过滤器、Jinja2中的控制和循环语句

在模板中使用的 {{ name }} 结构表示一个变量,它是一种特殊的占位符,告诉模 板引擎这个位置的值从渲染模板时使用的数据中获取。

Jinja2 能识别所有类型的变量,甚至是一些复杂的类型,例如列表、字典和对象。在模板中使用变量的一些示例如下:

模板过滤器:

过滤器是通过管道符号(|)进行使用的,例如:{{ name|length }},将返回name的长度。过滤器相当于是一个Jinjia2自己的函数,把当前的变量传入到过滤器中,然后过滤器根据自己的功能,再返回相应的值,之后再将结果渲染到页面中,方便你在HTML中也能使用函数。

常用模板过滤器:

完整的模板过滤器可在Jinjia2官方文档查看:

Template Designer Documentation — Jinja Documentation (3.1.x) (palletsprojects.com)

比如在我们template文件夹中的html文件有着这么一段代码:

<h1>我是江西人,{{ username }},字符串长度为:{{ username|length }}</h1>

 这里使用了传入的参数username,然后用了过滤器length返回字符串长度。

效果;

 Jinja2中的控制和循环语句

if语句

假如我们要对传进来的参数进行判断并在页面上返回相应结果,比如我们对传入的年龄进行判断,如果≥18就显示你可以进网吧,否则在页面上显示你不可以进网吧。

在这里我们用的是if语句,格式为{% if 语句%},并且要跟上endif!

<h1>我是江西人,{{ username }},字符串长度为:{{ username|length }}</h1>
    {% if age >= 18 %}
        <div>您可以进网吧</div>
    {% else %}
        <div>您不可以进网吧</div>
    {% endif %}

这里我传入了一个大于18的值,效果:

 for语句

假如我们传进来了一个列表,里面包含四大名著,我们想在页面上分别显示出来,这时就可以用for语句了,格式与if语句差不多,如果对<ul>这些标签不熟可以看看前端知识。

<h1>我是江西人,{{ username }},字符串长度为:{{ username|length }}</h1>
    {% if age >= 18 %}
        <div>您可以进网吧</div>
    {% else %}
        <div>您不可以进网吧</div>
    {% endif %}
    <ul>
    {% for book in books %}
        <li>{{ book }}</li>
    {% endfor %}
    </ul>

效果: 

Jinja2还支持宏。宏类似python中的函数,例如:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值