Full Stack Python logo Full Stack Python

全部主题 | Blog | 时讯 | @fullstackpython | Facebook | 源码

模板引擎

模板引擎对模板文件进行处理,模板文件是处于你的 Python 代码和需要输出的格式化内容(如 HTML 和 PDF 等)之间的一种中间格式文件。

为什么说模板引擎很重要?

模板引擎允许开发人员创建 HTML 等所需的内容形式,同时,它还提供条件判断和 for 循环等编程构件来对输出进行处理。 模板文件由预定义的标记和待插入内容的模板标签段组成, 这些文件由开发人员创建,然后再由模板引擎处理。

例如,查看当前网页的 HTML 内容的前 10 行源代码:

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

除了 这行,它是为各个单独页面提供包含哪些内容的简短描述之外, 上面的各行 HTML 代码对于 Full Stack Python 网站的每个页面来说都是一样的。

base.html 是用于创建 Full Stack Python 的 Jinja 模板,它使得网站的每个页面都有一致的 HTML 内容结构,同时又能为每个页面动态生成那些在 静态网站生成器 执行时需要修改的内容。下面的代码来自 base.html 模板,可以看到 meta 描述是要求子模板来生成的。

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

在一个典型的 WSGI 应用中,当某个特定 URL 的 HTTP 请求进来后,模板引擎将生成一个 HTML 文件的应答。

Python 模板引擎

Python 有几个比较流行的模板引擎。从允许执行任意代码,到只准许通过模板标签来执行有限的功能,每个模板引擎都有各自的实现方式。从下图可以看出 Python 的四个主要模板引擎的模板代码功能。

从不含任何逻辑代码到能执行任意代码。

Jinja

Jinja, 也叫做 "Jinja2", 这个广受欢迎的 Python 模板引擎是作为一个独立的开源项目开发的,而不像其它的一些模板引擎那样是某个较大的 Web 框架的一部分。

主要的 Python 开源应用如 配置管理 工具 Ansible 和 SaltStack,以及 静态网站生成器 Pelican 等都默认使用 Jinja 来创建输出文件 。

Jinja2 页还有很多很多关于 Jinja 的学习内容。

Django 模板

Django (如 Django 1.9) 除了支持 Jinja 等其它一些可替代的模板引擎外,它还有 自己的模板引擎

Mako

MakoPyramid Web 框架 的默认模板引擎,并且因作为许多 其它 Web 框架的替代模板引擎而广受支持。

模板引擎资源

接下来你想学习 Web 框架、CSS 还是 JavaScript?

我想学习如何用框架创建 Python Web 应用。

我的应用可以运行但是很难看。如何美化用户界面?

在我的 Python Web 应用中如何使用 JavaScript?

#### 在这里注册以便每月能收到一份邮件资料,内容包含本站的主要更新、教程和 Python 书籍的打折码等。

The Full Stack Python Guide to Deployments 想找到一个完整的,一步一步的部署方案吗?请看《The Full Stack Python Guide to Deployments》.

邮件获取更新

##### 注册以便每月能收到一份邮件资料,内容包含本站的主要更新和 Python 教程。

目录

1. 简介学习编程为什么用 Python?Python 2 还是 3?企业 PythonPython CommunityBest Python Podcasts最佳 Python 资源最佳 Python 视频2. 开发环境VimEmacs3. 核心语言生成器推导式4. Web 开发Web 框架DjangoFlaskBottlePyramidMorepath其它 Web 框架Web 设计级联样式表 (CSS)JavaScriptWebSockets模板引擎Web 应用安全静态网站生成器Jinja25. 数据关系型数据库NoSQL 数据存储对象关系映射器PostgreSQLMySQLSQLite6. Web APIsAPI 集成API 的创建Twilio7. 部署服务器平台即服务(PaaS)操作系统Web 服务器WSGI 服务器源码控制应用程序依赖静态内容任务队列配置管理持续集成日志监控Web 分析Docker缓存微服务DevOpsNginxApache HTTP 服务器CaddyGreen Unicorn (Gunicorn)UbuntuPelicanLektorMkDocs8. 测试单元测试集成测试代码度量调试9. MetaBotsChange LogFuture DirectionsAbout the AuthorSQLAlchemyPeewee …或者显示全部目录内容.

模板引擎

重要的更新内容会通过 Twitter 账号@fullstackpython发布。


需要更加详细的教程吗?请看 《The Full Stack Python Guide to Deployments》。

Chapters

1. 简介2. 开发环境3. 核心语言4. Web 开发 » 模板引擎 5. 数据6. Web APIs7. 部署8. 测试9. Meta …or view the full table of contents.


This site is based on Matt Makai's project Full Stack Python, thanks for his excellent work!

此网站由 @haiiiiiyun开源爱好者们 共同维护。 若发现错误或想贡献,请访问: Github fullstackpython.cn 项目