Flask Template模版引擎(Jinja2)

本文详细介绍了Flask应用中如何使用Jinja2模版引擎,包括变量、过滤器、转义、基本模版、子模板以及结构控制语句如For、IF、Macros等。Jinja2的变量通过{{ … }}打印,过滤器通过管道符号进行操作,如{{ name | striptags | length }}。此外,还展示了如何进行模板继承和控制流程,以及如何使用include语句包含其他模板。
摘要由CSDN通过智能技术生成

Flask Template模版引擎(Jinja2)

Flask利用Jinja2作为模版引擎。模版引擎包含了变量和表达式,当模版被渲染时,它们被替换为值和标签,它们控制着模版的逻辑。

Jinja2默认的几种分割符:

  • {% … %} 表示声明
  • { { … }} 表达式打印到模版输出
  • {# … #} 对于未包含在模板输出中的注释
  • # … ## 行语句

变量

传递给模版的上下文字典定义了模版的变量

通过{ { … }}在模版中打印变量

{
   { foo.bar }}
{
   { foo['bar'] }}

双花括号不是变量的一部分,而是打印语句。如果访问标签内的变量,在双花括号周围不要再次出现大括号。

如果变量或属性不存在,将会返回一个未定义的值,默认的行为是打印或迭代计算为空字符串,并且每次操作都会失败。
在Flask中如果需要加载静态文件的URL,有两种实现的方法:

<link rel='stylesheel' href='/static/css/style.css'>
<link rel='stylesheel' href='{
   { url_for('static', filename='css/style.css') }}'>

过滤器

变量可以通过过滤器进行修改。过滤器通过管道符合(|)与变量分开,并且可以在括号中包含可选参数。可以链接多个过滤器。一个过滤器的输出应用于下一个过滤器。

例如{ { name | striptags | length }}从name变量中移除所有的HTML标签,并计算长度进行打印输出。

接受参数的过滤器在参数周围有括号,就像函数调用一样。例如:{ { listx | join (‘,’) }}将以逗号为间隔将列表进行打印输出,与Python的str.join(‘,’, listx)相似。

转义

有时需要或必要让Jinja2忽略它会以变量或块的形式处理的部分。例如,如果使用迷人语法,你希望使用{ {作为模版中的原始字符串并且不启动变量。

{
   { '{
    {' }}

对于更大的部分,将原始块标记为块是有意义的,使用{% raw %}。例如,要在模版中包含示例Jinja语法,且不执行代码。

{% raw %}
    <ul>
    {% for item in seq %}
        <li>{
   { item }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值