使Jinja2在Django以干净的方式集成成为可能的包。
Djinja的Python项目详细描述
djanja试图在django中集成jinja2。目的是取代 完全是django的模板系统,包括管理。
目前,以下模板模块已经编写完毕并正在运行:
- Django管理
- Django调试工具栏
在不久的将来,您可以将django模板语法转换为jinja2语法,这不是很棒吗?
如果你有想法,请告诉我们。
安装
将
djinja
目录添加到python路径。将以下模板加载器(位于模板加载器顶部)添加到项目的
settings.py
文件中:^{tt1}$
绑定到模板加载器允许djinja自动管理all 带有jinja2的模板(包括django模板)
注意:如果在尝试访问时未安装djinja.contrib.admin 对于django管理,您将得到一个错误,这是因为 django管理模板不适用于jinja2。
就这些!;)
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', ... )