模板引擎 Template Engines

模板引擎通过标识符生成字符输出,常用来输出HTML,XML 或 PDF。

为什么模板引擎重要?

模板引擎可以格式化的生成输出文件。比如,这个HTML文件的前10行:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="author" content="Matt Makai">
  <meta name="description" content="Template engines provide programmatic output of formatted content such as HTML, XML or PDF.">
  <link rel="shortcut icon" href="//static.fullstackpython.com/fsp-fav.png">

基本上每个HTML文件的前10行都是如此。

下面代码演示如何从 base.html 模板生产代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="author" content="Matt Makai">
  {% block meta_header %}{% endblock %}
  <link rel="shortcut icon" href="//static.fullstackpython.com/fsp-fav.png">

In a typical WSGI application, the template engine would generate the HTML output response when an HTTP request comes in for a particular URL.

Python模板引擎

有多种流行的Python模板引擎。

Spectrum between no logic in templates and the ability to run arbitrary code.

Jinja (Jinja2)

Jinja,又称为 “Jinja2″,是一个流行的开源的Python模板引擎。有些模板引擎,比如Django templates 作为大型框架的一部分,很难在其他项目中被重用。

多数Python开源项目比如configuration management 工具Ansible and SaltStack 以及static site generator Pelican都使用Jinja作为默认模板引擎。

Django模板

Django自带模板引擎template engine(Django 1.9)取代其他模板引擎比如Jinja。

Mako

Mako 是另一个常用的模板引擎。

其他Python模板引擎

模板引擎执行对比

模板引擎资源