python jinjia2语法

Jinja2 是一个强大的 Python 模板引擎,广泛用于生成 HTML、XML 或其他基于文本的格式。它的语法灵活且易于使用,支持变量插值、控制结构、过滤器、自定义函数等功能。以下是 Jinja2 语法的详细介绍:

1. 变量插值

使用双大括号 {{ }} 来插入变量的值。

<p>Hello, {{ name }}!</p>

2. 控制结构

条件语句

使用 {% if %}{% elif %}{% else %} 来进行条件判断。

{% if user.is_authenticated %}<p>Welcome, {{ user.name }}!</p>
{% else %}<p>Please log in.</p>
{% endif %}
循环语句

使用 {% for %} 来进行循环。

<ul>
{% for item in items %}<li>{{ item }}</li>
{% endfor %}
</ul>

3. 过滤器

过滤器用于修改变量的输出,使用管道符 |

<p>{{ name | upper }}</p>  <!-- 将 name 转换为大写 -->
<p>{{ price | round(2) }}</p>  <!-- 将 price 四舍五入到两位小数 -->

常用过滤器包括:

  • length:返回序列的长度
  • lower:将字符串转换为小写
  • upper:将字符串转换为大写
  • default:如果变量未定义,则使用默认值
  • join:将列表连接成字符串

4. 宏

宏类似于函数,可以在模板中定义和调用。

{% macro render_item(item) %}<li>{{ item }}</li>
{% endmacro %}<ul>
{% for item in items %}{{ render_item(item) }}
{% endfor %}
</ul>

5. 模板继承

模板继承允许你创建一个基础模板,并在子模板中扩展或覆盖其内容。

基础模板 (base.html)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>{% block title %}Default Title{% endblock %}</title>
</head>
<body><header>{% block header %}{% endblock %}</header><main>{% block content %}{% endblock %}</main><footer>{% block footer %}{% endblock %}</footer>
</body>
</html>
子模板 (child.html)
{% extends "base.html" %}{% block title %}Page Title{% endblock %}
{% block header %}<h1>Welcome</h1>{% endblock %}
{% block content %}<p>This is the content of the page.</p>
{% endblock %}

6. 包含模板

使用 {% include %} 来包含其他模板文件。

{% include "header.html" %}
<p>Main content here.</p>
{% include "footer.html" %}

7. 注释

使用 {# #} 来添加注释,这些注释不会出现在渲染后的输出中。

{# This is a comment #}
<p>Hello, {{ name }}!</p>

8. 设置变量

使用 {% set %} 来设置变量。

{% set total = price * quantity %}
<p>Total: {{ total }}</p>

9. 原始内容

使用 {% raw %}{% endraw %} 来包含原始内容,不进行模板渲染。

{% raw %}{{ This will not be rendered }}
{% endraw %}

10. 自定义过滤器和全局函数

你可以在 Python 代码中定义自定义过滤器和全局函数,并将它们注册到 Jinja2 环境中。

自定义过滤器
from jinja2 import Environment, FileSystemLoaderdef reverse_string(s):return s[::-1]env = Environment(loader=FileSystemLoader('templates'))
env.filters['reverse'] = reverse_stringtemplate = env.get_template('example_template.html')
rendered = template.render(name="Jinja2")
print(rendered)
自定义全局函数
def greet(name):return f"Hello, {name}!"env.globals['greet'] = greettemplate = env.get_template('example_template.html')
rendered = template

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

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

相关文章

JAVA零基础学习3(Scanner类,字符串,StringBuilder,StringJoinder,ArrayList成员方法)

JAVA零基础学习&#xff13; Scanner类输入示例代码代码解释完整代码1. 读取字符串2. 读取整数3. 读取浮点数4. 读取布尔值5. 读取单个单词6. 读取长整型数7. 读取短整型数8. 读取字节数注意事项总结 API 字符串解释示例解释解决方法示例&#xff1a;使用 StringBuilder String…

口碑爆棚的高分法国电影,一起在光影中领略法式魅力吧!

文章目录 引言《与玛格丽特的午后》(网友评分:9.1)《午夜巴黎》(网友评分:8.3)《玫瑰人生》(网友评分:8.4)《双姝奇缘》(网友评分:8.7)《巴黎淘气帮》(网友评分:8.6)《触不可及》(网友评分:9.3)《爱在日落黄昏时》(网友评分:8.9)《悲惨世界》(网友评分:…

VScode使用Github Copilot插件时出现read ECONNREST问题的解决方法

文章目录 read ECONNREST查看是否仍是 Copilot 会员查看控制台输出网络连接问题浏览器设置问题笔者的话 read ECONNREST 最近使用 Copilot 时一直出现 read ECONNREST 问题&#xff0c;这个表示连接被对方重置了&#xff0c;就是说在读取数据时连接被关闭。 我首先怀疑是不是…

[023-2].第2节:SpringBoot中接收参数相关注解

我的后端学习大纲 SpringBoot学习大纲 1.1.基本介绍&#xff1a; SpringBoot接收客户端提交的数据、参数会使用的一些注解&#xff1a; 1.PathVarible2. RequestHeader3.RequestParam4.CookieValue5.RequestBody6.RequestAttribute 1.2.接收参数相关注解与应用实例&#xff1a;…

无人机制造工艺流程详解

一、需求分析 无人机制造的第一步是需求分析。这一阶段主要明确无人机的使用场景、功能要求、性能指标以及成本预算等。通过与客户或项目团队的深入沟通&#xff0c;确保对无人机的需求有全面而准确的理解。同时&#xff0c;也需要进行市场调研&#xff0c;了解同类型产品的特…

科普文:docker基础概念、软件安装和常用命令

docker基本概念 一 容器的概念 1. 什么是容器&#xff1a;容器是在隔离的环境里面运行的一个进程&#xff0c;这个隔离的环境有自己的系统目录文件&#xff0c;有自己的ip地址&#xff0c;主机名等。也可以说&#xff1a;容器是一种轻量级虚拟化的技术。 2. 容器相对于kvm虚…

如何使用 SQLite ?

SQLite 是一个轻量级、嵌入式的关系型数据库管理系统&#xff08;RDBMS&#xff09;。它是一种 C 库&#xff0c;实现了自给自足、无服务器、零配置、事务性 SQL 数据库引擎。SQLite 的源代码是开放的&#xff0c;完全在公共领域。它被广泛用于各种应用程序&#xff0c;包括浏览…

【C语言】函数的递归

目录 一、什么是递归 二、递归的思想 三、递归的限制条件 四、递归中的栈溢出 五、递归举例 &#xff08;1&#xff09;例1&#xff1a;n的阶乘 &#xff08;2&#xff09;例子2&#xff1a;顺序打印一个数的每一位 六、递归和迭代 七、拓展题目 &#xff08;1&#…

Chainlit一个快速构建成式AI应用的Python框架,无缝集成与多平台部署

概述 Chainlit 是一个开源 Python 包&#xff0c;用于构建和部署生成式 AI 应用的开源框架。它提供了一种简单的方法来创建交互式的用户界面&#xff0c;这些界面可以与 LLM&#xff08;大型语言模型&#xff09;驱动的应用程序进行通信。Chainlit 旨在帮助开发者快速构建基于…

如何知道一个字段在selenium中是否可编辑?

这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。 我们如何知道我们是否可以编辑字段&#xff1f;“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性&#xff0c;则无法编辑或操作该元素或字段。 因此&#xff0c;如果我们找到一…

强大的开源网络攻击面分析工具:Hetty

Hetty&#xff1a;深入网络的每一个角落&#xff0c;Hetty让安全漏洞无处遁形。- 精选真开源&#xff0c;释放新价值。 概览 Hetty作为一个专为网络攻击面分析而设计的开源HTTP/1.1客户端&#xff0c;其设计初衷是为了帮助安全研究人员和渗透测试人员深入挖掘潜在的网络漏洞。…

[网鼎杯 2020 朱雀组]Nmap(详细解读版)

这道题考察nmap的一些用法,以及escapeshellarg和escapeshellcmd两个函数的绕过&#xff0c;可以看这里PHP escapeshellarg()escapeshellcmd() 之殇 (seebug.org) 两种解题方法&#xff1a; 第一种通过nmap的-iL参数读取扫描一个文件到指定文件中第二种是利用nmap的参数写入we…

NTC测温

前言 假设已知ad-温度转换表ad_table[100]; 数组元素ad_table[0] ~ ad_table[99] 对应温度0 ~ 99℃&#xff1b;已知MCU检测到NTC两端电压ad值位temp_ad,请写出将temp_ad转换成温度值的程序代码&#xff0c;要求温度值精确到0.1℃ 代码 为了将AD值转换为精确到0.1℃的温度值…

AMQP-核心概念-5

本文参考以下链接摘录翻译&#xff1a; https://www.rabbitmq.com/tutorials/amqp-concepts 消息确认&#xff08;Message Acknowledgements&#xff09; 消费者应用&#xff0c;就是接收和处理消息的应用。它们偶尔会处理个别消息失败&#xff0c;断开与服务器之间的连接或许…

数据库基础--概念模型

文章目录 概念模型回顾概念结构设计基本概念概念模型中的几个基本概念联系——实体集之间的对应关系讨论&#xff1a;怎样寻找信息世界中的实体和联系&#xff1f;实体和联系的举例概念模型的设计概念模型的设计方法与步骤概念结构设计步骤合并E-R图时的冲突解决方法练习&#…

二叉树习题leetcode 572. 另一棵树的子树

题目链接&#xff1a;572. 另一棵树的子树 二叉树遍历综合问题 题意 给定两棵树&#xff0c;判断第二棵树是否为第一颗树的子树。 思路 用到了100. 相同的树 的思路&#xff0c;把给定的二叉树&#xff0c;每个节点都和subRoot都做一次相同的树的比较&#xff0c;只要正确&…

Llama + Dify,在你的电脑搭建一套AI工作流

theme: smartblue 点赞 关注 收藏 学会了 本文简介 最近字节在推Coze&#xff0c;你可以在这个平台制作知识库、制作工作流&#xff0c;生成一个具有特定领域知识的智能体。 那么&#xff0c;有没有可能在本地也部署一套这个东西呢&#xff1f;这样敏感数据就不会泄露了&…

使用两台虚拟机分别部署前端和后端项目

使用两台虚拟机分别部署前端和后端项目 1 部署方案2 准备两台虚拟机&#xff0c;并配置网络环境3 部署后端项目3.1 打包服务3.2 上传jar包到服务器3.3 集成Systemd3.3.1 移动端服务集成Systemd3.3.2 后台管理系统集成Systemd 4 配置域名映射5 部署前端项目5.1 移动端5.1.1 打包…

Kettle下载安装

环境说明 虚拟机&#xff1a;Win7&#xff1b;MySql8.0 主机&#xff1a;Win11&#xff1b;JDK1.8&#xff1b;Kettle 9.4&#xff08;Pentaho Data Integration 9.4&#xff09;&#xff08;下载方式见文末&#xff09; 安装说明 【1】解压后运行Spoon.bat 【2】将jar包 复…

DjangoRF-6-项目模块projects模型

首先&#xff0c;这是个新模块&#xff0c;在apps下创建projects 1.1、django-admin startapp projects 1.2进行注册 ‘apps.projects.apps.ProjectsConfig’ 进行接口编写的过程中&#xff0c;落入数据库的字段相同的有很多我们要在utils文件下进行闯进模型鸡肋 from django…