全部主题 | Blog | 时讯 | @fullstackpython | Facebook | 源码
Jinja2
Jinja2 是一个 Python 模板引擎,用于创建 HTML、XML 等其它标记格式文件,这些文件能通过 HTTP 响应返回给用户。
为什么说 Jinja2 很有用?
Jinja2 有用的原因是:它具有一致的模板标签语法,并且该项目完全是作为 一个独立的开源项目 存在的,因此它能用于其它的代码库中。
Jinja2 是对 模板引擎 概念的一种实现。 到 Web 开发 那一章去学习更多相关知识,或者到 总目录 页去查看其它所有主题。
对于一个模板引擎的代码功能来说,一个极端是允许将任意的代码嵌入到模板中,另一个极端是允许一个开发者在模板中编写任何她想要的功能。Jinja2 的实现经过了大量的考虑 ,并在这两者之前取得了一个很好的平衡。
Jinja2 的起源和发展
Jinja2 的第一个有记录的公开发行版是 2008 的 2.0rc1。自那之后,该引擎进行了大量的更新,且一直处于活跃开发状态。
Jinja2 引擎当然不是最好的模板引擎。实际上,Jinja2 语法是受到 Django 内置模板引擎启发的, Django 的相关引擎在好几年前就已发布了。之前就已经有很多的模板系统了,例如 JavaServer 页面 (JSPs),它就比 Jinja2 将近早了十年。Jinja2 的创建吸收了其它模板引擎的经验,而今它在 Python 社区中有着广泛应用。
哪些项目使用了 Jinja2?
Jinja2 是一个在 Web 框架 中经常使用的模板引擎,像 Flask、Bottle、 Morepath 以及随着 1.8 版的更新,现在的 Django 也可选用该引擎了。 Jinja2 也被 配置管理 工具 Ansible 、静态网站生成器 Pelican 等其它许多类似工具用作模板语言。
其目标是:当开发人员已经通过某个项目学会了 Jinja2,那么在另一个需要模板功能的项目中就可以使用完全相同的语法和样式。复用降低了学习曲线并使得开源项目作者免于重造一种新的模板样式。
Jinja2 相关资源
《Real Python》 上有篇很好的 Jinja2 入门资料,它通过大量的示例代码向我们讲解了如何使用模板引擎。
《Flask mega 教程》的第二部分 都是讲述 Jinja2 模板的。讲述了控制流、模板继承以及该引擎的其它标准特性。
在 Django 1.8 的 Admin 中升级使用 Jinja2 模板 讲解了如何修复一个当 Django 1.8 将 Jinja2 作为模板引擎时会出现的一个问题。
官方的 Jinja2 模板设计师文档 毫无疑问是相当有用的,它即可以作为参考使用,也可以进行通读,从而学习如何正确地使用模板标签。
如果你想在 Web 框架 或者其它现有工具之外使用 Jinja2 的话,这里有一份 非常实用的快速加载函数代码段,它能使该模板引擎更加容易用于脚本和 REPL 环境中。
当 Jinja2 和 LaTeX 一起使用时,一些 Jinja2 段会与 LaTeX 命令冲突。查看这篇文章 LaTeX 模板通过 Python 和 Jinja2 来生成 PDF 来了解如何解决这些问题。
如果你经常使用 Jinja2 的话,你一定会有想在模板文件中转义大段 Jinja2 格式文本的情况。如果需要这样做的话,可以看看 "raw" 模板标签。
学习更多的模板引擎知识,还是去学习新的主题?
我已经创建了一个 Python Web 应用,那我如何部署呢?
想找到一个完整的,一步一步的部署方案吗?请看《The Full Stack Python Guide to Deployments》.
邮件获取更新
目录
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 …或者显示全部目录内容.
Jinja2
重要的更新内容会通过 Twitter 账号@fullstackpython发布。
需要更加详细的教程吗?请看 《The Full Stack Python Guide to Deployments》。
Chapters
1. 简介2. 开发环境3. 核心语言4. Web 开发 » Jinja2 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 项目