文章目录

  • 简介
    • 前提条件
    • 安装
    • 基本API用法
  • API
    • 基础
    • Unicode
  • 高级API
  • 参考文档

简介

Jinja2是用于Python的库,旨在灵活,快速且安全地运行。

前提条件

Jinja2适用于Python 2.6.x,2.7.x和> = 3.3。如果您使用的是Python 3.2,则可以使用旧版的Jinja2(2.6),因为Jinja2版本2.7中已不再支持Python 3.2。
    如果希望使用PackageLoader该类,则还需要在运行时安装setuptools或distribute。

安装

您可以使用easy_install或pip安装最新的Jinja2版本:

easy_install Jinja2
pip install Jinja2

也可以从tarball分发包中获取:

  1. 从下载页面下载最新tarball
  2. 打开压缩包;
  3. python setup.py install

请注意,您必须具有setuptools或distribute。优选选择后者。

基本API用法

简要介绍Jinja2模板的Python API。
    创建和渲染模板的最基本方法是通过Template。但是,如果不是从字符串而是从文件系统或其他数据源中加载模板,则不建议使用此方法。


>>> from jinja2 import Template
>>> template = Template('Hello {{ name }}!')
>>> template.render(name='John Doe')
'Hello John Doe!'

通过创建Template实例,您将获得一个新的模板对象,该对象提供了一种称为render()的方法,该方法在使用字典或关键字参数调用时将扩展该模板。传递给模板的字典或关键字参数是模板所谓“上下文”。
您可以在此处看到Jinja2在内部使用unicode,返回值为一个unicode字符串。因此,请确保您的应用程序确实在内部使用unicode。

API

基础

Jinja2使用一个称为模板环境(template Environment)的中心对象。此类的实例用于存储配置和全局对象,并用于从文件系统或其他位置加载模板。即使使用Template类的构造函数从字符串创建模板,也会自动为您创建一个环境(尽管是共享的环境)。
    大多数应用程序将在应用程序初始化时创建一个Environment对象,并使用该对象来加载模板。但是,在某些情况下,如果使用不同的配置,并排放置多个环境会很有用。
    配置Jinja2为应用程序加载模板的最简单方法大致如下:

from jinja2 import Environment, PackageLoader, select_autoescape
env = Environment(loader=PackageLoader('yourapplication', 'templates'),autoescape=select_autoescape(['html', 'xml'])
)

这将创建一个具有默认设置的模板环境和一个加载程序,该加载程序在yourapplication python包的templates文件夹中查找模板。如果要从数据库或其他资源加载模板,可以使用不同的加载程序,也可以编写自己的加载程序。这还支持HTML和XML文件的自动转义(Autoescaping)。
    要从此环境加载模板,您只需调用 get_template() 方法,然后返回已加载的Template:

template = env.get_template('mytemplate.html')

要使用一些变量呈现它,只需调用render()方法:

print(template.render(the='variables', go='here'))

使用模板加载器而不是将字符串传递到Template 或者 Environment.from_string() 具有多个优点。除了易于使用之外,它还支持模板继承。

Unicode

Jinja2在内部使用Unicode,这意味着您必须将Unicode对象传递给只包含ASCII字符的render函数或byte字符串。另外,换行符被规范化为一个行尾,该行尾符合默认的UNIX样式(\n)。
    Python 2.x支持两种表示字符串对象的方式。一个是 str 类型,另一个是unicode 类型,两者都扩展了一个称为 basestring 的类型。不幸的是,除非使用ASCII字符,否则默认值 str 不应用于存储基于文本的信息。
    使用Python 2.6可以在每个模块级别将unicode设置为默认值,使用Python 3,unicode为默认值。
    要设置更好的模块编码,请使用Unicode文本将以下注释添加到Python模块的第一行或第二行:

# -*- coding: utf-8 -*-

我们建议将utf-8用作Python模块和模板的编码,因为它可以表示utf-8中的每个Unicode字符,并且因为它向后兼容ASCII。
    另一个重要的事情是Jinja2如何处理模板中的字符串文字。一个幼稚的实现将对所有字符串文字使用Unicode字符串,但是在过去发现这是有问题的,因为某些库正在显式地对str进行类型检查。例如, datetime.strftime不接受Unicode参数。为了不完全破坏它,Jinja2 将为适合ASCII的字符串以及所有其他unicode返回str。

高级API

高级API是您将在应用程序中用来加载和呈现Jinja2模板的API。另一方面,低级API(Low Level API)仅在您想更深入地研究Jinja2或开发扩展时才有用。
    翻译到这里,感觉我根本没有把python学明白。Jinja2的学习和翻译暂时停止。我先把python深入学习一下。

参考文档

https://jinja.palletsprojects.com/en/2.10.x

Jinja2安装与基本API用法相关推荐

  1. TensorFlow Keras API用法

    TensorFlow Keras API用法 Keras 是与 TensorFlow 一起使用的更高级别的作为后端的 API.添加层就像添加一行代码一样简单.在模型架构之后,使用一行代码,可以编译和拟 ...

  2. CompletableFuture API用法介绍(二)

    文章目录 一.纯消费 API 1.thenAccep 2.thenAcceptBoth 3.runAfterBoth 4.thenRun(Runnable action) 二.组合API 1.then ...

  3. CompletableFuture API用法介绍(一)

    文章目录 一.前言 二.CompletableFuture 1.主动完成计算 2.创建异步任务 3.计算完成时对结果的处理 whenComplete/exceptionally/handle 4.结果 ...

  4. 安装 Windows 自动化 API 3.0 后,Visual Studio 2010 的运行速度更快

    安装 Windows 自动化 API 3.0 后,Visual Studio 2010 的运行速度更快 本文适用于以下产品: Microsoft Visual Studio 2010 如果未安装 Wi ...

  5. 安装 PyTorch C++ API libtorch 及一个最小例子

    安装 PyTorch C++ API libtorch 及一个最小例子 翻译自:https://pytorch.org/cppdocs/installing.html 我们提供依赖 PyTorch 所 ...

  6. JavaEE基础(02):Servlet核心API用法详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.核心API简介 1.Servlet执行流程 Servlet是JavaWeb的三大组件之一(Servlet.Filter.Listener) ...

  7. 安装 Windows 自动化 API 3.0 时,visual Studio 2010 更快地运行

    如果未安装 Windows 自动化 API 3.0,使用 Windows 自动化 api 的应用程序可以显著减少 Microsoft Visual Studio 智能感知性能. 例如,Windows ...

  8. TensorRT C++ API用法

    TensorRT C++ API用法 文章目录 TensorRT C++ API用法 1.C++ API vs Python API 2.C++实例TensorRT对象 参考 1.C++ API vs ...

  9. linux文件名带星号,Linux安装之bash星号用法

    关于Linux安装之bash星号用法,星号,这是个神奇的符号,在bash中,星号也充满魔力,它是通配符之一. 简单列举下星号的功能,被称为万能字符不是没有理由的. 1)文件名匹配: 默认情况下匹配所有 ...

最新文章

  1. 从一个数组中寻找出现奇数次的数字
  2. pandas object转float_数据分析篇 | Pandas基础用法6【完结篇】
  3. Bzoj2555 SubString
  4. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查...
  5. ㉔云上场景:瑞云科技,支持Render cloud的超强计算
  6. java list wordcount,初试spark java WordCount
  7. 使用ALV中输出ICON
  8. (筆記) 如何使用ModelSim作前仿真與後仿真? (SOC) (Quartus II) (ModelSim)
  9. 《自顶向下网络设计(第3版)》——2.7 适应性
  10. 华为服务器扩容内存进不去系统,服务器换内存系统出问题吗
  11. UBUNTU安装,不建议最小安装,因为有很多问题
  12. Kepware与C#
  13. android模拟机新闻APP,Exagear ET(Exagear模拟器)
  14. 读后感----我奋斗了18年还是不能和你坐在一起喝咖啡
  15. cad如何打开stp文件_stp是什么文件?怎么打开stp文件?
  16. python自动化开发-[第十五天]-jquery
  17. 数学建模方法-灰色预测
  18. c语言位运算负数的实例_巧妙运用C语言位运算
  19. 大数据分析培训课程有哪些?初级阶段学什么?
  20. Java基础语法-条件语句

热门文章

  1. 抖音作品怎么快速上热门推荐?如何上精选
  2. jpg图片转换成pdf文件,方法步骤
  3. 外贸客户来源的渠道有哪些?
  4. MATLAB二维绘图(二)向图中添加标题,坐标轴,图标和文字信息
  5. 你问我答:小匠,如何像你一样,做一个订阅号挣它 100 W?
  6. 原始套接字编程——Teardrop
  7. linux xz压缩解压
  8. 致初学者:如何学好Python这门编程语言?
  9. Double值取得小数点后两位的若干方法
  10. 直击文印痛点 中小企业需要这样一台复合机