Jinja2模板引擎
这里是Jinja2通用模板语言的文档。 Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活、快速和安全的。如果你接触过其它的基于文本的模板语言,比如 Smarty 或 Django ,那么 Jinja2 会让你有 宾至如归的感觉。Jinja2 通过坚持 Python 原则来保证对设计者和开发者友好,为模板环 境添加有帮助的功能。
介绍
这里是 Jinjin2 通用模板语言的文档。 Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活、快速和安全的。
如果你接触过其它的基于文本的模板语言,比如 Smarty 或 Django ,那么 Jinja2 会让你有 宾至如归的感觉。Jinja2 通过坚持 Python 原则来保证对设计者和开发者友好,为模板环 境添加有帮助的功能。
预备知识
Jinja2 需要至少 Python 2.4 版本来运行。此外,如果你使用 Python 2.4 ,一个可 以创建 python 扩展的可用的 C 编译器会为调试器安装。
如果你没有一个可用的 C 编译器,并且你视图安装带调试支持的源码版本,你会得到一个 编译器错误。 If you don’t have a working C-compiler and you are trying to install the source
安装
条条大路通 Jinja2 。如果你不确定怎么做,用 Python egg 或 tarball 吧。
作为一个 Python egg (通过 easy_install)
你可以用 easy_install 或 pip 安装最新的版本的 Jinja2:
sudo easy_install Jinja2
sudo pip install Jinja2
这会在你的 Python 安装中的 site-packages 目录安装一个 Jinja2 egg 。
(如果你在 Windows 的命令行中安装,省略 sudo 并且确保你用管理员权限运行 命令行)
从 tarball 版本安装
- 从 download page 下载最新的 tarball
- 解包 tarball
- sudo python setup.py install
注意这需要你已经安装了 setuptools 或 distribute ,首选后者。
这会在你 Python 安装的 site-packages 目录安装 Jinja2 。
安装开发版本
- 安装 git
- git clone git://github.com/mitsuhiko/jinja2.git
- cd jinja2
- ln -s jinja2 /usr/lib/python2.X/site-packages
作为第四步的替代选择,你也可以执行 python setup.py develop ,这会通过 disbribute 在开发模式下安装包。这样也有编译 C 扩展的优势。
加速 MarkupSafe
从 2.5.1 开始, Jinja2 会检查是否安装 MarkupSafe 模块。如果它找到了, 它会用这个模块的 Markup 类来代替自带的。 MarkupSafe 替换 Jinja2 中附带的 老的加速模块,其优势在于更好的安装脚本,自动试图安装 C 的版本并在不可行时 漂亮地退化到纯 Python 实现的版本。
MarkupSafe 的 C 实现要快得多,并推荐用于 Jinja2 自动转义。
启用调试支持模块
默认 Jinja2 不会编译调试支持模块。如果你没有 Python 头文件或可用的编译器, 启用它会失败。这当你在 Windows 上安装 Jinja2 是很常见的情况。
由于调试模式只对 Python 2.4 是必要的,所以你不需要这么做,除非你在运行 2.4:
sudo python setup.py --with-debugsupport install
基本 API 使用
本节简要介绍 Jinja2 模板的 Python API 。
最基本的方式就是通过 Template 创建一个模板并渲染它。 如果你的模板不是从字符串加载,而是文件系统或别的数据源,无论如何这都不 是推荐的方式:
>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')
>>> template.render(name='John Doe')
u'Hello John Doe!'
通过创建一个 Template 的实例,你会得到一个新的模板对象,提供一 个名为 render() 的方法,该方法在有字典或关键字参数时调用 扩充模板。字典或关键字参数会被传递到模板,即模板“上下文”。
如你所见, Jinja2 内部使用 unicode 并且返回值也是 unicode 字符串。所以确 保你的应用里也确实使用 unicode 。
实验性的 Python 3 支持
Jinja 2.3 带来 Python 3 的实验性支持。这意味着在新版本上,所有的单元测试 都会通过,但是仍有一些小 bug 和不一致的行为。如果你发现任何 bug ,请向 Jinja bug tracker 提供反馈。
也请记住本文档是为 Python 2 编撰的,你会需要手动把示例代码转换为 Python 3 的语法。
Jinja2模板引擎的更多相关文章
- Flask 框架下 Jinja2 模板引擎高层 API 类——Environment
Environment 类版本: 本文所描述的 Environment 类对应于 Jinja2-2.7 版本. Environment 类功能: Environment 是 Jinja2 中的一个 ...
- 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范
一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...
- Flask从入门到精通之Jinja2模板引擎
我们使用一个简单的例子切入到Jinja2模板引擎,形式最简单的Jinja2模板引擎就是一个包含响应文本的文件,实例如下: <h1>Hello World!</h1> 最简单的包 ...
- 使用jinja2模板引擎生成html文件
使用jinja2模板引擎生成html文件 jinja2是纯Python的模板引擎,是仿照Django模板的Python模板语言. 它速度快,被广泛使用,提供了可选的沙箱模板执行环境保证安全. 使用pi ...
- 【Python-Django】Jinja2模板引擎配置教程详解!!!!
Jinjia2的官方文档:http://jinja.pocoo.org/docs/2.10/ 1. 安装Jinja2扩展包 $ pip install Jinja2 2. 配置Jinja2模板引擎 T ...
- 基于hi-nginx的web开发(python篇)——使用jinja2模板引擎
模板引擎的使用在web开发中是不可避免和必要的.hi.py框架使用jinja2作为模板引擎. 为了使用hi.py提供的jinja2引擎,首先需要引入它: from hi import hi,templ ...
- django默认模板引擎和jinja2模板引擎
在使用中,大家会发现django默认模板引擎有很多局限性,最明显的就是四则运算.就只能加减,乘除都不支持.另外还有判断相等,不能直接if,要用ifequal.确实不太方便.还有一点,django默认模 ...
- Tornado框架配置使用Jinja2模板引擎
安装jinja2包 pip install jinja2 定义继承tornado.web.RequestHandler的子类BaseHandler.如果请求处理类继承这个类将会使用jinja模板引擎: ...
- Python Flask Jinja2模板引擎
模板 简介 模板是一个包含响应文本的文件,其中包含用占位变量表示的动态部分,其具体值只在请 求的上下文中才能知道. 渲染 使用真实值替换变量,再返回最终得到的响应字符串,这一过程 称为渲染.为了渲染模 ...
- flask框架下的jinja2模板引擎(2)(过滤器与自定义过滤器)
flask框架下的jinja2模块引擎(1):https://www.cnblogs.com/chichung/p/9774556.html 这篇论文主要用来记录下 jinja2 的过滤器. 什么是过 ...
随机推荐
- ASP.NET中ajax验证用户名和邮箱是否重复
这个是前台显示的页面代码↓ <%@ Page Language="C#" AutoEventWireup="true" CodeFile="De ...
- Linux 下通过mail命令发送邮件
mail -s "测试" 1968089885@foxmail.com 需要先配置smtp服务器
- 52-Ubuntu-打包压缩-2-打包/解包
tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件. 序号 命令 作用 01 tar -cvf 打包文件.tar 被打包文件 打包 ...
- Vue下渐变效果有时候失效
记录一个问题:我在项目中给按钮设置一个渐变属性,调试的时候有时候有效果,有时候又没有,代码如下: .training-right-bmz { background: -webkit-linear-gr ...
- 前端 css 补充内容
给个菜鸟教程的css教程网址(全的狠!!!): https://www.runoob.com/css/css-tutorial.html 下面是几张css基础样式图:
- 6361. 【NOIP2019模拟2019.9.18】鲳数
题目 题目大意 给你一个区间\([l,r]\),求这个区间内每个整数的十进制上从高位到低位的逆序对个数之和. 思考历程 一开始就知道这是个数位DP-- 结果一直都没有调出来,心态崩了-- 正解 先讲讲 ...
- LOJ #6538. 烷基计数 加强版 加强版(生成函数,burnside引理,多项式牛顿迭代)
传送门. 不妨设\(A(x)\)表示答案. 对于一个点,考虑它的三个子节点,直接卷起来是\(A(x)^3\),但是这样肯定会计重,因为我们要的是无序的子节点. 那么用burnside引理,枚举一个排列 ...
- 字符串匹配dp+bitset,滚动数组优化——hdu5745(经典)
bitset的经典优化,即把可行性01数组的转移代价降低 bitset的适用情况,当内层状态只和外层状态的上一个状态相关,并且内层状态的相关距离是一个固定的数,可用bitset,换言之,能用滚动数组是 ...
- Delphi 一些pas
Delphi -- 创建 桌面.发送到....快速启动栏.开始菜单.程序菜单.右键菜 单 {====================================================== ...
- NX二次开发-创建图纸尺寸表达式抑制UF_DRF_add_controlling_exp
#include <uf.h> #include <uf_modl.h> #include <uf_drf.h> #include <uf_obj.h> ...