Jinja2模板引擎使用指南

文章目录

      • 官网链接
      • 引言
      • Jinja2 原理
      • 基础使用
        • 安装 Jinja2
        • 基本示例
      • 高级使用
        • 宏(Macros)
        • 过滤器(Filters)
        • 继承(Inheritance)
      • 结论

官网链接

Jinja2 官网

引言

Jinja2 是一个现代的、设计师友好的模板引擎,用于 Python。它基于 Django 的模板系统,但更为灵活、功能丰富,并提供了完整的 Unicode 支持。Jinja2 被广泛应用于 web 开发中,尤其是在 Flask 和 Django 等 Python web 框架中作为模板渲染引擎。本文将详细介绍 Jinja2 的原理、基础使用以及高级特性。

Jinja2 原理

Jinja2 的核心在于其模板渲染机制。它允许开发者定义模板文件,这些文件包含了静态内容(如 HTML 标记)和动态内容(通过模板变量和表达式插入)。当模板被渲染时,Jinja2 会解析模板文件,替换其中的动态内容为实际的值,最终生成一个完整的、包含所有必要数据的输出文件(如 HTML 页面)。

Jinja2 提供了丰富的控制结构(如条件语句、循环等)和过滤器(用于格式化变量),使得模板文件的编写既灵活又强大。

基础使用

安装 Jinja2

首先,你需要安装 Jinja2。可以通过 pip 轻松安装:

pip install Jinja2
基本示例
from jinja2 import Template# 定义一个模板字符串
template_str = '''
<html>
<head><title>{{ title }}</title></head>
<body><h1>{{ greeting }} World!</h1><ul>{% for item in item_list %}<li>{{ item }}</li>{% endfor %}</ul>
</body>
</html>
'''# 创建模板对象
template = Template(template_str)# 渲染模板
rendered_template = template.render(title='Hello Jinja2',greeting='Hello',item_list=['Apple', 'Banana', 'Cherry']
)print(rendered_template)

高级使用

宏(Macros)

宏允许你在模板中定义可重用的代码块。它们类似于 Python 中的函数。

{% macro input(name, value='', type='text') %}<input type="{{ type }}" name="{{ name }}" value="{{ value|e }}" />
{% endmacro %}<form>{{ input('username') }}{{ input('password', type='password') }}
</form>
过滤器(Filters)

Jinja2 提供了许多内置过滤器,用于修改变量的输出。你也可以自定义过滤器。

{{ my_variable|upper }}  <!-- 将变量转换为大写 --># 自定义过滤器
@app.template_filter('reverse')
def reverse_filter(s):return s[::-1]{{ my_string|reverse }}  <!-- 调用自定义过滤器 -->
继承(Inheritance)

Jinja2 支持模板继承,这允许你构建一个基础模板,然后让其他模板继承并扩展这个基础模板。

<!-- base.html -->
<html>
<head>{% block head %}<title>{% block title %}{% endblock %} - My Webpage</title>{% endblock %}
</head>
<body><div id="content">{% block content %}{% endblock %}</div>
</body>
</html><!-- child.html -->
{% extends "base.html" %}{% block title %}Index{% endblock %}{% block content %}<p>This is the index page.</p>
{% endblock %}

结论

Jinja2 是一个功能强大的模板引擎,它为 Python web 开发提供了灵活的模板渲染能力。通过本文的介绍,你应该已经对 Jinja2 的原理、基础使用和高级特性有了较为全面的了解。无论是简单的变量替换,还是复杂的宏定义、过滤器编写和模板继承,Jinja2 都能满足你的需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869899.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter——最详细(Table)网格、表格组件使用教程

背景 用于展示表格组件&#xff0c;可指定线宽、列宽、文字方向等属性 属性作用columnWidths列的宽度defaultVerticalAlignment网格内部组件摆放方向border网格样式修改children表格里面的组件textDirection文本排序方向 import package:flutter/material.dart;class CustomTa…

公众号运营秘籍:8 大策略让你的粉丝翻倍!

在当今信息爆炸的时代&#xff0c;微信公众号的运营者们面临着前所未有的挑战&#xff1a;如何在这个充满竞争的红海中脱颖而出&#xff0c;吸引并留住粉丝&#xff1f;事实上&#xff0c;微信公众号的红利期并未完全过去&#xff0c;关键在于我们如何策略性地运营&#xff0c;…

使用PEFT库进行ChatGLM3-6B模型的QLORA高效微调

PEFT库进行ChatGLM3-6B模型QLORA高效微调 QLORA微调ChatGLM3-6B模型安装相关库使用ChatGLM3-6B模型GPU显存占用准备数据集加载数据集数据处理数据集处理加载量化模型-4bit预处理量化模型配置LoRA适配器训练超参数配置开始训练保存LoRA模型模型推理合并模型使用微调后的模型 QLO…

【Pytorch实用教程】transformer中创建嵌入层的模块nn.Embedding的用法

文章目录 1. nn.Embedding的简单介绍1.1 基本用法1.2 示例代码1.3 注意事项2. 通俗的理解num_embeddings和embedding_dim2.1 num_embeddings2.2 embedding_dim2.3 使用场景举例结合示例1. nn.Embedding的简单介绍 nn.Embedding 是 PyTorch 中的一个模块,用于创建一个嵌入层。…

【中国纸箱网元宇宙】—— 打造包装行业的数字生态系统

在数字化和互联网技术飞速发展的今天&#xff0c;各个行业都在探索如何利用新技术来促进业务的发展和创新。作为响应这一趋势的先行者&#xff0c;中国纸箱网已经正式迈入了元宇宙的世界&#xff0c;致力于为包装行业打造一个全面的数字生态系统。 ### 什么是中国纸箱网元宇宙…

准大一新生开学千万要带证件照用途大揭秘

1、提前关注好都有哪些考场&#xff0c;以及这些考场大致在网页的哪个位置。比如我选对外经贸大学&#xff0c;我就直接找到第二个点进去。 2、电脑上同时开了谷歌浏览器和IE浏览器&#xff0c;以及手机也登陆了。亲测下来&#xff0c;同一时间刷新&#xff0c;谷歌浏览器能显示…

​cesium、three.js,三维GIS为啥那么热?到底怎么学呢?

​cesium、three.js&#xff0c;三维GIS为啥那么热&#xff1f;他们的应用场景都是什么呢&#xff1f;接下来我们可以一起来看看~ 三维GIS的应用 GIS和3D的应用是趋势&#xff0c;目前已经有很多应用案例&#xff0c;例如BIM&#xff0c;智慧城市&#xff0c;数字孪生等。如下…

理解Gunicorn:Python WSGI服务器的基石

理解Gunicorn&#xff1a;Python WSGI服务器的基石 介绍 Gunicorn&#xff0c;全称Green Unicorn&#xff0c;是一个为Python WSGI&#xff08;Web Server Gateway Interface&#xff09;应用设计的高效、轻量级HTTP服务器。作为Python Web应用部署的常用工具&#xff0c;Gun…

汇聚荣拼多多电商实力强吗?

汇聚荣拼多多电商实力强吗?汇聚荣拼多多&#xff0c;作为中国电商领域的后起之秀&#xff0c;已经在市场上占据了一席之地。那么&#xff0c;它的实力究竟如何呢?在回答这个问题之前&#xff0c;我们需要先了解一下拼多多的基本情况。拼多多是一家以社交电商为主要模式的购物…

3个方法教你如果快速绕过Excel工作表保护密码

在日常生活中&#xff0c;我们可能会遇到一些特殊情况&#xff0c;比如不小心忘记了Excel文件中设置的打开密码。别担心&#xff01;这里为您带来一份详细的Excel文件密码移除教程&#xff0c;助您轻松绕过Excel工作表保护。 方法一&#xff1a;使用备份文件 如果您有文件的备…

深入理解 go map

什么是 map 维基百科里这样定义 map: In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection. 简单…

[nicetomeetyou@onionmail.org].Faust勒索病毒科普知识全解析

引言 随着网络技术的飞速发展&#xff0c;勒索病毒已成为威胁全球网络安全的一大隐患。[nicetomeetyouonionmail.org].Faust作为一种新型勒索病毒&#xff0c;通过其复杂的加密技术和隐蔽的传播手段&#xff0c;给个人、企业及政府机构带来了巨大的损失。本文将从多个维度全面解…

C++的入门——(命名空间, 输入输出 ,缺省参数 ,函数重载 ,引用, 内联函数 ,nullptr)

文章目录 引言c兼容C语⾔c的重要性C在⼯作领域中的应⽤ 一、命名空间namespace的价值namespace的定义命名空间使⽤ 二、 C输⼊&输出三、缺省参数四、函数重载1、参数类型不同2、参数个数不同3、参数类型顺序不同 五、引⽤1、引⽤的概念和定义2、引⽤的特性3、引⽤的使⽤4、…

计算机网络-HTTP常见面试题

目录 1. HTTP是什么&#xff1f;2. HTTP常见的状态码&#xff1f;3. HTTP 常见的字段有哪些&#xff1f;4. GET和POST有什么区别&#xff1a;5. GET 和POST方法都是安全和幂等的吗&#xff1f;6. HTTP缓存技术7. HTTP/1.1相比HTTP/1.0提高了什么性能&#xff1f;8. HTTP/2做了什…

SCSA第四天

ASPF FTP --- 文件传输协议 Tftp --- 简单文件传输协议 FTP协议相较于Tftp协议 ---- 1&#xff0c;需要进行认证 2&#xff0c;拥有一套完整的命令集 用户认证 防火墙管理员认证 ---- 校验登录者身份合法性 用户认证 --- 上网行为管理中的一环 上网用户认证 --- 三层认证…

Java SQL 连接(初级)

实训Day3 记实 实训第三天&#xff0c;今天是头脑风暴的第二天&#xff0c;课程将SQL与Java&#xff08;idea&#xff09;代码结合&#xff0c;这是一项具有挑战性的代码课程。课程将两个应用结合起来&#xff0c;展现了Java代码的跨平台性&#xff0c;展现了Java语言的封装性…

[终端安全]-6 移动终端之应用程序安全

笔者在终端安全专题前面的文章中介绍了移动终端硬件安全和操作系统安全&#xff0c;本文主要介绍移动终端应用安全。在本文最前面&#xff0c;笔者想先解答一位朋友的疑问&#xff0c;为什么需要费心打造一个完整的面面俱到的安全体系&#xff1f; 1 移动终端安全的重要性 移…

Cesium中实现全球体积云效果的一种方案

原生 Cesium 提供了一种积云的效果&#xff0c;云的物理特征和渲染性能都还不错&#xff0c;这种方案适合表达小范围相对离散的云朵&#xff0c;但是用来实现全球范围下相对连续、柔和渐变的云层比较困难。本文在体渲染的基础上&#xff0c;参考了开源社区中 shadertoy 和 thre…

c#调用c++ dll库报错System.BadImageFormatException

System.BadImageFormatException:“试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)” 1. dll需要选择release模式进行编译 2.选择相同位数&#xff0c;比如x64平台&#xff0c;c#也需要x64 3.不要设置c#不支持的函数供调用 比如&#xff1a; c可以输出到控制台…

Meta发布Llama 2驱动的AI代码生成器:Code Llama,开源来袭!

Meta 刚刚了号称是编程领域 “最先进的大语言模型”—— Code Llama &#xff0c;可根据 代码和自然语言提示 生成代码和有关代码的自然语言&#xff0c;支持多种主流编程语言&#xff0c; 包括 Python、C、Java、PHP、Typescript (Javascript)、C# 和 Bash 。 Code Llama 完全…