首页 > Python资料 博客日记
【Python系列】Jinja2 模板引擎
2024-09-06 05:00:05Python资料围观70次
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
- 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
- 导航
非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨
一.基本介绍
在现代软件开发中,模板引擎扮演着至关重要的角色,尤其是在 Web 开发领域。它们允许开发者将逻辑代码与用户界面分离,使得代码更加清晰、易于维护。在 Python 社区中,Jinja2 是一个广泛使用的模板引擎,它提供了强大的功能来处理模板渲染。
1.Jinja2 简介
Jinja2 是一个用 Python 编写的模板引擎,它继承了 Django 模板语言的许多特性,同时加入了一些独特的功能。Jinja2 支持继承、包含、宏等高级功能,使得模板的创建和管理变得更加灵活和强大。
2.安装 Jinja2
安装 Jinja2 非常简单,你可以通过 pip 命令轻松安装:
pip install Jinja2
安装完成后,你就可以在 Python 代码中使用 Jinja2 了。
3.基本用法
Jinja2 的基本用法涉及到模板的创建和渲染。首先,你需要创建一个模板文件,然后在 Python 代码中加载并渲染这个模板。
4.创建模板
假设你有一个名为 template.html
的模板文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>{{ title }}</title>
</head>
<body>
<h1>{{ header }}</h1>
<p>{{ content }}</p>
</body>
</html>
在这个模板中,{{ title }}
、{{ header }}
和 {{ content }}
是变量占位符,它们将在渲染时被实际的数据替换。
5.渲染模板
接下来,你可以使用 Jinja2 的 Template
类来渲染这个模板。以下是如何在 Python 代码中完成这个过程的示例:
from jinja2 import Template
# 定义模板字符串
template_str = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ header }}</h1>
<p>{{ content }}</p>
</body>
</html>
"""
# 创建模板对象
template = Template(template_str)
# 定义上下文字典,包含要渲染的数据
context = {
'title': 'Hello Jinja2',
'header': 'Welcome to Jinja2',
'content': 'This is a simple example of using Jinja2.'
}
# 渲染模板
rendered_template = template.render(context)
# 打印渲染后的 HTML
print(rendered_template)
在这个例子中,我们首先定义了一个模板字符串 template_str
,然后创建了一个 Template
对象。接着,我们定义了一个包含数据的字典 context
,并将其传递给 render
方法。最后,我们打印出渲染后的 HTML 内容。
6.高级特性
Jinja2 提供了许多高级特性,如继承、包含和宏,这些特性可以帮助你创建更复杂的模板。
继承
继承允许你创建一个基础模板,然后让其他模板继承这个基础模板。这在创建具有一致布局的 Web 应用时非常有用。
<!-- base.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>{% block title %}My Website{% endblock %}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
在这个基础模板中,我们定义了 title
和 content
两个块,其他模板可以通过继承这个模板并覆盖这些块来定义自己的内容。
包含
包含功能允许你在一个模板中包含另一个模板。这在创建重复的 HTML 结构时非常有用。
<!-- header.html -->
<header>
<h1>Welcome to My Website</h1>
</header>
你可以在其他模板中包含这个 header.html
:
{% include 'header.html' %}
宏
宏允许你定义可重用的模板代码块。这在创建复杂的模板时非常有用。
{% macro input(name, value='', type='text', size=20) %}
<input
type="{{ type }}"
name="{{ name }}"
value="{{ value|e }}"
size="{{ size }}"
/>
{% endmacro %}
你可以在其他模板中调用这个宏:
{{ input('username') }}
二.需求实现
1.需求描述
如何将 config.yaml 中的内容变为赋值后的内容
config.yaml
llm:
api_key: { { api_key } }
api_base: { { api_base } }
type: openai_chat
model: { { llm_model } }
model_supports_json: true
赋值后的结果
llm:
api_base: your_api_base
api_key: your_api_key
model: your_llm_model
model_supports_json: true
type: openai_chat
2.代码实现
读取 yaml 文件并将占位符改为指定字符,并写入新文件
import yaml
from jinja2 import Template
# 读取YAML文件
def read_yaml_as_str(file_path):
with open(file_path, 'r') as file:
return file.read()
file_path = 'config.yaml'
yaml_data = read_yaml_as_str(file_path)
data = {
'api_key': 'your_api_key',
'api_base': 'your_api_base',
'llm_model': 'your_llm_model'
}
t = Template(yaml_data)
filled_template = t.render(data)
print(filled_template)
def write_yaml(data, file_path):
with open(file_path, 'w', encoding='utf-8') as file:
yaml.safe_dump(data, file)
write_yaml(yaml.safe_load(filled_template), 'config-template.yaml')
觉得有用的话点个赞
👍🏻
呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙
标签:
相关文章
最新发布
- 光流法结合深度学习神经网络的原理及应用(完整代码都有Python opencv)
- Python 图像处理进阶:特征提取与图像分类
- 大数据可视化分析-基于python的电影数据分析及可视化系统_9532dr50
- 【Python】入门(运算、输出、数据类型)
- 【Python】第一弹---解锁编程新世界:深入理解计算机基础与Python入门指南
- 华为OD机试E卷 --第k个排列 --24年OD统一考试(Java & JS & Python & C & C++)
- Python已安装包在import时报错未找到的解决方法
- 【Python】自动化神器PyAutoGUI —告别手动操作,一键模拟鼠标键盘,玩转微信及各种软件自动化
- Pycharm连接SQL Sever(详细教程)
- Python编程练习题及解析(49题)
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程