使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 oop getter/setter   java LDAP“简单”用户身份验证(JNDI Tomcat)不稳定?   java将Jenkins jnlp代理设置为通过API以编程方式使用WebSocket   java如何获取在servlet筛选器的静态块中启动的静态类的实例?   前两个数字的java charAt循环不能循环它   java在Spring引导执行器中是否有检查子服务运行状况的标准方法?   java我可以将jacksonmapped@JsonProperties推到“顶层”吗?   json JAVA:opencsv随机读取CSV单元格   无第三方应用程序的java捆绑包JRE   使用openidConnectClient功能的WAS Liberty中出现java无效cookie标头错误   java如何在Restful Web服务中从Http Post获取数组?   java如何读取安卓开发的JSON url?   如何在java IO中打开包含汉字的文件?