跳转到主要内容

Jade语法模板适配器,用于Django、Jinja2、Mako和Tornado模板

项目描述

PyJade是Jade-lang的高性能Python端口,可以将任何.jade源代码转换为每种模板语言(Django、Jinja2、Mako或Tornado)。

工具

简单地将转换输出到您的控制台

pyjade [-c django|jinja|mako|tornado] input.jade [output.html]

安装

首先,您必须做

pip install pyjade

或者

python setup.py install

现在只需 使用`.jade`扩展名命名您的模板,这个Jade编译器就会完成剩余的工作。任何其他扩展名的模板都不会被pyjade编译器编译。

Django

settings.py中,向TEMPLATES添加一个loader,如下所示

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'django.core.context_processors.request'
            ],
            'loaders': [
                # PyJade part:   ##############################
                ('pyjade.ext.django.Loader', (
                    'django.template.loaders.filesystem.Loader',
                    'django.template.loaders.app_directories.Loader',
                ))
            ],
            'builtins': ['pyjade.ext.django.templatetags'],  # Remove this line for Django 1.8
        },
    },
]

Jinja2

只需将pyjade.ext.jinja.PyJadeExtension作为扩展添加

jinja_env = Environment(extensions=['pyjade.ext.jinja.PyJadeExtension'])

Mako

只需将pyjade.ext.mako.preprocessor作为预处理器添加

from pyjade.ext.mako import preprocessor as mako_preprocessor
mako.template.Template(haml_source,
    preprocessor=mako_preprocessor
)

Flask

只需将pyjade.ext.jinja.PyJadeExtension作为扩展添加到应用的环境中

app.jinja_env.add_extension('pyjade.ext.jinja.PyJadeExtension')

Pyramid

调整您的“your_project/__init__.py”并在主函数中添加以下行

config.include('pyjade.ext.pyramid')

Tornado模板

在导入tornado.template之后添加此内容

from tornado import template
from pyjade.ext.tornado import patch_tornado
patch_tornado()

(...)

语法

与Jade Node.js模块完全相同(除了未实现的情况) https://github.com/visionmedia/jade/blob/master/README.md

示例

此代码

!!! 5
html(lang="en")
  head
    title= pageTitle
    script(type='text/javascript')
      if (foo) {
         bar()
      }
  body
    h1.title Jade - node template engine
    #container
      if youAreUsingJade
        p You are amazing
      else
        p Get on it!

转换为

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>{{pageTitle}}</title>
    <script type='text/javascript'>
      if (foo) {
         bar()
      }
    </script>
  </head>
  <body>
    <h1 class="title">Jade - node template engine</h1>
    <div id="container">
      {%if youAreUsingJade%}
        <p>You are amazing</p>
      {%else%}
        <p>Get on it!</p>
      {%endif%}
    </div>
  </body>
</html>

注册过滤器

如果您想将一个函数注册为过滤器,只需使用pyjade.register_filter("filter_name")装饰该函数即可

import pyjade

@pyjade.register_filter('capitalize')
def capitalize(text,ast):
  return text.capitalize()

测试

您必须安装nose包。您可以使用以下命令进行测试

./test.sh

待办事项和错误

见: http://github.com/syrusakbary/pyjade/issues

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。

源分发

pyjade-4.0.0.tar.gz (29.3 kB 查看哈希值)

上传时间

由以下支持