使Jinja2在Django以干净的方式集成成为可能的包。

Djinja的Python项目详细描述


djanja试图在django中集成jinja2。目的是取代 完全是django的模板系统,包括管理

目前,以下模板模块已经编写完毕并正在运行:

  • Django管理
  • Django调试工具栏

在不久的将来,您可以将django模板语法转换为jinja2语法,这不是很棒吗?

如果你有想法,请告诉我们。

安装

  1. djinja目录添加到python路径。

  2. 将以下模板加载器(位于模板加载器顶部)添加到项目的settings.py文件中:

    ^{tt1}$

    绑定到模板加载器允许djinja自动管理all 带有jinja2的模板(包括django模板)

    注意:如果在尝试访问时未安装djinja.contrib.admin 对于django管理,您将得到一个错误,这是因为 django管理模板不适用于jinja2。

  3. 就这些!;)

important:您必须调整网站模板以适应jinja2,否则 渲染时将出错(直到djinja converser准备就绪)。

自定义筛选器和扩展名

djinja使用与django相同的templatetag库方法,这意味着 你的应用程序有一个templatetags目录,并且每个模块 表示“模板库”,提供新的筛选器和标记。

可以使用djinja.template.Library中的自定义Library类 注册Jinja特定组件。

Djinja可以自动使您现有的Django过滤器可用 Jinja,但不是你的自定义标记-你需要重写为Jinja 手动扩展。

启用jinja的模板库示例:

from djinja import template
register = template.Library()

register.filter(plenk, 'plenk')             # Filter function
register.extension(FooExtension)            # Jinja version of the tag
register.tag(my_function_name)              # A global function/object
register.set(a='hello')                     # A context variable (named a)

您还可以通过settings.py

JINJA2_FILTERS = (
    'path.to.myfilter',
)
JINJA2_EXTENSIONS = (
    'jinja2.ext.do',
)

火腿

djinja可以呈现haml页面(已经安装了HamlPy-https://github.com/jessemiller/HamlPy),并且非常简单,只需将.haml扩展放入模板并在设置的jinja2_extensions变量中添加'djinja.template.extensions.haml'

JINJA2_EXTENSIONS = (
     ...
     'djinja.template.extensions.haml',
     ...
 )

haml模板还可以包括、扩展等html模板和viceversa。

给药

对于安装django管理jinja2模板,只需在settings.py中已安装的应用程序的“django.contrib.admin”之前添加'djinja.contrib.admin',

配置示例:

INSTALLED_APPS = (
    ...
    'djinja.contrib.admin',
    'django.contrib.admin',
    ...
)

基准

运行测试:

ab -n100 http://localhost/admin/

在Django

Requests per second: 67.93 [#/sec] (mean) Time per request: 14.721 [ms] (mean)

带Jinja2(DJINJA)

Requests per second: 202.16 [#/sec] (mean) Time per request: 4.947 [ms] (mean)

^{str 1}3倍的性能,在管理中使用jinja2而不是django模板

Django调试工具栏

对于安装django调试工具栏jinja2模板,只需在settings.py中已安装的应用程序中的“调试工具栏”之前添加'djinja.contrib.debug_toolbar',

配置示例:

INSTALLED_APPS = (
    ...
    'djinja.contrib.debug_toolbar',
    'debug_toolbar',
    ...
)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从文本文件中读取时显示java符号“ï»”   java在有很多生产商的情况下如何改进Disruptor?   不同线程的java不同堆栈   用Java模拟oraclespool   jsp java访问自定义web中的错误信息。xml错误页   给出奇怪结果的java集成堆栈   java在jsp中显示值列表   java会话。保存更新具有错误ID的实体   在树数据结构中添加节点时的java递归   java在Spring Data Mongodb中使用$$ROOT检索整个文档   java我应该把图像放在罐子里还是不放在罐子里?(Inno设置)   java将bat文件放入jar文件中   Java:如何在节点上执行XPath查询   控制台应用程序如何在Mac上从Java输出重音字符?