Jinja模板使用

本文介绍了Jinja模板语言在Flask中的使用,包括if...else语句的使用方式,如何进行条件判断和多分支选择。此外,还讲解了过滤器的概念,它们可以通过管道符号操作变量,实现如去除HTML标签、转换大小写等功能。Jinja还提供了测试功能,用于检查变量是否存在等。内置的过滤器和测试列表可在官方文档中找到。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Flask默认使用了jinja模板语言,jinja的设计文档在这里

jinja提供了一些方便的函数调用,例如常见的for、if…else。
例如:

<ul id="navigation">
   {% for item in navigation %}
       <li><a href="{{ item.href }}">{{ item.caption }}</a></li>
   {% endfor %}
</ul>

if语句可以测试 一个变量是否未定义,为空或 false。
一般的语法是
<do something> if <something is true> else <do something else>
其中else 部分是可选的,也可以用 elif 和 else 来构建多个分支

{% if kenny.sick %}
    Kenny is sick.
{% elif kenny.dead %}
    You killed Kenny!  You bastard!!!
{% else %}
    Kenny looks okay --- so far
{% endif %}

官方文档给出的if用作内联表达式的例子很有用,

{% extends layout_template if layout_template is defined else 'master.html' %}

这在一个变量定义的情况下才继承一个模板,否则继承默认的布局模板。例如登录前和登录后继承不同的模板,就可以这样实现。

还可以这样用:

{{ '[%s]' % page.title if page.title }}

这里没有显式地提供 else 块,会求值一个未定义对象

还可以用作循环过滤:

{% for user in users if not user.hidden %}
    <li>{{ user.username|e }}</li>
{% endfor %}

另一个很有用的是过滤器,实际上也就是对变量进行操作的函数。
过滤器与变量用管道符号( | )分割,并且也 可以用圆括号传递可选参数。多个过滤器可以链式调用,前一个过滤器的输出会被作为 后一个过滤器的输入。
例如:

{{ name|striptags|title }} 

这句实际上会移除 name 中的所有 HTML 标签并且改写为标题样式的大小写格式,具体是由两个内置过滤器striptags和title实现的。可以在这里查看所有的内置过滤器。

除了过滤器,还可以使用测试,用is来测试变量或表达式,例如name is defined用来测试name是否被定义过。内置的测试清单在这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值