IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Jinja2中怎么使用宏? -> 正文阅读

[移动开发]Jinja2中怎么使用宏?

??Jinja2中的宏的作用类似于常规编程语言中的函数,可以把频繁冲的常用行为定义为一个可重用的函数,减少代码复杂度。

1. 宏的定义

??Jinja2中宏的定义以{% macro -%}开始,{% endmacro %}为结束。以如下代码为例进行说明:

{% macro def_p(name,age) %}
<p>This is {{name}},He is {{age}} years old.</p>
{% endmacro %}

其中def_p相当于常规编程语言中的函数名,name和age则相当于常规编程语言中的函数参数。

2. 宏的使用

??既然Jinja2中宏类似于函数,自然也可以类似函数调用的方式来使用宏,不过要使用{{……}}将函数体包起来。具体如下:
test_jinjia2.html

<!--定义宏-->
{% macro def_p(name,age) %}
<p>This is {{name}},He is {{age}} years old.</p>
{% endmacro %}

<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
<!--宏的使用-->
{{ def_p(name,age) }}
{{ def_p(user['name'],user['age']) }}
{{ def_p(user_list[0],user_list[1]) }}
</body>
</html>

python主函数代码如下:

from jinja2 import loaders, FileSystemLoader, Environment
# 指定模板文件搜索的开始位置
templateLoader=FileSystemLoader(searchpath="./",encoding='utf-8')
templateEnv=Environment(loader=templateLoader)
# 这里的文件位置是以searchpath做为基准的
template=templateEnv.get_template("./test_jinja2.html")
html=template.render(name='James',age=30,user={'name':'Mark','age':40},
                     user_list=['Make',35])#输入参数
print(html)

经过渲染之后的html代码如下:

<!--定义宏-->
<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
<!--宏的使用-->
<p>This is James,He is 30 years old.</p>
<p>This is Mark,He is 40 years old.</p>
<p>This is Make,He is 35 years old.</p>
</body>
</html>

??如果宏的定义和宏的使用不在同一个模板文件中,则需要先使用{% from <宏所在文件> import <宏名> %}引入宏的定义再进行使用。假设宏的定义在test_1.html文件,而宏在test_jinja2.html文件中使用,则这两个文件的代码如下:
test_1.html

<!--定义宏-->
{% macro def_p(name,age) %}
<p>This is {{name}},He is {{age}} years old.</p>
{% endmacro %}

test_jinja2.html

<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
<!--先引入宏-->
{% from 'test_1.html' import def_p %}
<!--再使用宏-->
{{ def_p(name,age) }}
{{ def_p(user['name'],user['age']) }}
{{ def_p(user_list[0],user_list[1]) }}
</body>
</html>

重新运行python代码可以得到相同的结果,这里不再展示。

参考
  1. http://docs.jinkan.org/docs/jinja2/templates.html#id19在这里插入代码片
  2. https://www.cnblogs.com/two-peanuts/p/11341367.html
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:14:01  更:2022-02-16 13:14:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 15:00:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码