JinJa2模板1

目录

定义

添加Python语句和表达式

1.语句

2.表达式

3.注释

for循环特殊变量

渲染模板

上下文

模板中定义变量(set标签)

内置上下文变量

 自定义山下文


定义

模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输出最终的HTML页面,这个过程被称为渲染( rendering)。

添加Python语句和表达式

1.语句

if判断、for循环等


{% ... %}


{% if user.bio %}
    <i>{{ user.bio }}</i>
{% else %}
    <i>This user has not provided a bio.</i>
{% endif %}
{% for movie in movies %} 
    <li>{{ movie.name }} - {{ movie.year }}</li> 
{% endfor %}

2.表达式

字符串、变量、函数调用等


{{  ....  }}


3.注释


{#  ..... #}


for循环特殊变量

渲染模板

渲染函数 :render_template()

from flask import Flask,render_template

@app.route('/')
def hello_world():
    user = '123'
    name = 'zhangsan'
    return render_template('index.html',user=user,name=name)

if __name__ == '__main__':
    app.run()

函数说明

render_template()函数中,第一个参数为模板文件名,第二个参数为传入模板的变量(前面的user是模板内名称、后面的是要传的变量)

第二个参数设置为**locals(),实现给模板传递全部的本地变量,在模板中可以直接使用{{user}}、{{name}}。

注:render_template_string()函数用来渲染模板字符串。

return render_template_string('<h1>index</h1>')  #可以执行html标签语句

上下文

模板中定义变量(set标签)

{% set navigation = [('/', 'Home'), ('/about', 'About')] %}

将一部分模板数据定义成变量

{% set navigation %} 
    <li><a href="/">Home</a> 
    <li><a href="/about">About</a> 
{% endset %}

内置上下文变量

标准模板全局变量

 自定义山下文

设置模板全局变量

app.context_processor装饰器,可以注册模板上下文处理函数,可以完成统一传入变量的工作,模板上下文函数需要返回一个包含变量键值对的字典。

@app.context_processor 
def inject_foo(): 
    foo = 'I am foo.' 
    return dict(foo=foo) # 等同于return {'foo': foo}

在调用render_template()函数渲染模板时,所有使用app.context_processor装饰器注册的模板上下文处理函数都会被执行,这些函数的返回值回被添加到模板中,在模板中就可以直接使用foo变量。

将app.context_processor作为方法调用,传入模板上下文处理函数

def inject_foo(): 
    foo = 'I am foo.' 
    return dict(foo=foo) 
app.context_processor(inject_foo)

使用lambda简化

app.context_processor(lambda: dict(foo='I am foo.'))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值