当前位置:网站首页 > 技术博客 > 正文

python(2.5+1.25j)*4j/2



Jinja2是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker和velocity。 它能完全支持unicode,并具有集成的沙箱执行环境,应用广泛。Jinja2使用BSD授权。

Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能。

优点:

导入一个模块测试,我们写一个简单的例子。

通过创建一个 Template 的实例,你会得到一个新的模板对象,提供一 个名为 的方法,该方法在有字典或关键字参数时调用 扩充模板。字典或关键字参数会被传递到模板,即模板“上下文”。Jinja2 内部使用 并且返回值也是 字符串。所以确 保你的应用里也确实使用 。

模板仅仅是文本文件。它可以生成任何基于文本的格式(HTML、XML、CSV、LaTex 等等)。 它并没有特定的扩展名, .html 或 .xml 都是可以的。

模板包含 变量 或 表达式 ,这两者在模板求值的时候会被替换为值。模板中 还有标签,控制模板的逻辑。模板语法的大量灵感来自于 Django 和 Python 。

下面是一个最小的模板,它阐明了一些基础。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="en"> <head>

<title>My Webpage</title>

</head> <body>

<ul id="navigation"> {% for item in navigation %}

<li><a href=https://www.osgeo.cn/python-tutorial/"{{ item.href }}">{{ item.caption }}</a></li>

{% endfor %} </ul>

<h1>My Webpage</h1> {{ a_variable }}

</body> </html>

这包含了默认的设定。应用开发者会把语法从 改成 或类似的东西。

这里有两种分隔符: 和 。 用于执行语句, 输出语句结果到模板。

了解了这些Jinja2的使用就基本掌握了,需要的是一些细节信息。

应用把变量传递到模板,你可能在模板中弄混。变量上面也可以有你能访问的属性或元素。变量看起来是什么,完全取决于应用提供了什么。

你可以使用点( )来访问变量的属性,作为替代,也可以使用所谓的“下标”语 法( )。下面的几行效果是一样的:

花括号不是变量的一部分,而是打印语句的一部分。 如果变量或属性不存在,会返回一个未定义值。你可以对这类值做什么取决于应用的配 置,默认的行为是它如果被打印,其求值为一个空字符串,并且你可以迭代它,但其它操作会失败。

变量可以通过 过滤器 修改。过滤器与变量用管道符号( | )分割,并且也 可以用圆括号传递可选参数。多个过滤器可以链式调用,前一个过滤器的输出会被作为 后一个过滤器的输入。

使用方法

方法还有很多这只是比较常见的几个。查看地址

注释

要把模板中一行的部分注释掉,默认使用 {# … #} 注释语法。

默认配置中,模板引擎不会对空白做进一步修改,所以每个空白(空格、制表符、换行符 等等)都会原封不动返回。如果应用配置了 的 ,模板标签后的 第一个换行符会被自动移除。

此外,你也可以手动剥离模板中的空白。当你在块(比如一个 标签、一段注释或变 量表达式)的开始或结束放置一个减号( ),可以移除块前或块后的空白:

转义

有时想要或甚至必要让 忽略部分,不会把它作为变量或块来处理。例如,如果 使用默认语法,你想在在使用把 作为原始字符串使用,并且不会开始一个变量 的语法结构,你需要使用一个技巧。

最简单的方法是在变量分隔符中( )使用变量表达式输出:

中最强大的部分就是模板继承。模板继承允许你构建一个包含你站点共同元素的基 本模板“骨架”,并定义子模板可以覆盖的 块 。

听起来复杂,实际上很简单。从例子上手是最易于理解的。

这个模板,我们会把它叫做 base.html ,定义了一个简单的 HTML 骨架文档,你可 能使用一个简单的两栏页面。用内容填充空的块是子模板的工作:

标签定义了四个子模板可以填充的块。所有的 标签 告诉模板引擎子模板可以覆盖模板中的这些部分。

子模板是为了将基模板的内容进行重写。

标签是这里的关键。它告诉模板引擎这个模板“继承”另一个模板。 当模板系统对这个模板求值时,首先定位父模板。这有点像java里子类继承父类,在将父类的方法进行重写。

模板的文件名依赖于模板加载器。例如 允许你用文件名访问其它模板。你可以使用斜线访问子目录中的模板:

控制结构指的是所有的那些可以控制程序流的东西 —— 条件(比如 // )、 循环、以及宏和块之类的东西。控制结构在默认语法中以 块的形式出现。

语法与python基本相同,只要注意几个细节就可以完全掌握。

遍历序列中的每项。例如,要显示一个由 users 变量提供的用户列表,值得注意的是属性,在一个 循环块中你可以访问这些特殊的变量:

这个循环 10 次迭代之后会终止处理:

中的 语句可比 Python 中的 语句。在最简单的形式中,你可以测试 一个变量是否未定义,为空或 :

If语句可用的条件操作符

If语句逻辑连接符

宏类似常规编程语言中的函数。它们用于把常用行为作为可重用的函数,取代手动重复的工作。

这里是一个宏渲染表单元素的小例子:

在命名空间中,宏之后可以像函数一样调用:

如果宏在不同的模板中定义,你需要首先使用 。

定义宏(forms.html):

使用宏(forms.html)

或者是

宏与宏之间的交互

Environment:这个类的实例用于存储配置和全局对象,然后从文件系统或其他位置中加载模板。

FileSystemLoader:文件系统加载器,不需要模板文件存在某个Python包下,可以直接访问系统中的文件。

创建一个Environment加载器对象:

get_template():获取模板目录下的某个具体文件

加载一个模板文件:

render():接受变量,对模板进行渲染

渲染,将模板内的变量进行处理。

  • 上一篇: fwrite和fscanf
  • 下一篇: 使用jedis操作redis
  • 版权声明


    相关文章:

  • fwrite和fscanf2025-03-21 10:30:01
  • 应用层协议的内容包括以下哪几项?2025-03-21 10:30:01
  • patblt函数2025-03-21 10:30:01
  • 全局代理有危险吗2025-03-21 10:30:01
  • 手机编程app哪个好2025-03-21 10:30:01
  • 使用jedis操作redis2025-03-21 10:30:01
  • 文件对比工具免费版2025-03-21 10:30:01
  • knn与kmeans区别2025-03-21 10:30:01
  • mysql索引的好处2025-03-21 10:30:01
  • 虚拟化kvm详解2025-03-21 10:30:01