用Jinja2模板构建文件的方法

jweede.recipe.template的Python项目详细描述


jweede.recipe.template是amplecode.recipe.template的一个分支,它是一个用于使用jinja2模板生成文件的构建配方。配方配置了一个jinja2环境,默认情况下相对于buildout目录,允许模板扩展并包含与环境相关的其他模板。

可从pypi:http://pypi.python.org/pypi/jweede.recipe.template/

下载 https://travis-ci.org/jweede/amplecode.recipe.template.svg

构建选项

  • 模板文件或输入(必需):一个或多个jinja2模板文件路径。
  • 目标文件或输出(必需):多个目标文件路径之一。文件数必须与模板文件数匹配。
  • base dir:jinja2环境的基本目录。模板文件路径与此目录相关。默认为buildout目录。
  • 目标可执行文件:一个或多个指示目标文件可执行性的布尔标志(yes no true false 1 0)。如果只给了一个标志,它将应用于所有目标文件。
  • 鸡蛋:为鸡蛋列表保留,指定时方便地转换为pkg_resources.workingset
  • jinja2_filters:用空格分隔的自定义筛选函数

其他选项只需转发到模板,所有其他部分的选项都可以通过parts.<part-name>.<option-name>parts[<part-name>][<option-name>]获得。

值列表

配方选项可以包含一个或多个由空白分隔的值。当您想在jinja2模板中的空格分隔值上迭代时,可以使用拆分筛选器:

#!/bin/sh
{% for cmd in cmds|split %}
   echo "{{ cmd }}"
{% endfor %}

最小示例

foo.txt是从foo.txt.jinja2创建的,没有任何额外选项:

[buildout]
parts = foo

[foo]
recipe = brodul.recipe.template
template-file = foo.txt.jinja2
target-file = foo.txt

较大示例

foo.txt是从myapp/foo.txt.jinja2创建的,bar.sh是从myapp/bar.sh.jinja2创建的,第二个是可执行的,两个模板都可以使用指定的附加选项:

[buildout]
parts = foo

[foo]
recipe = brodul.recipe.template
base-dir = myapp
template-file =
    foo.txt.jinja2
    bar.sh.jinja2
input =
    foo.txt
    bar.sh
output =
    false
    true
project_name = Another Example
author = Me

[bar]
dashed-value = borg
value = cash

foo.txt.jinja2:

{{ parts.bar['dashed-value'] }}
{{ parts.bar.value }}
{{ author }}

注意

{{parts.bar.dashed-value}不起作用,但您可以作为dict键访问它。

同一部分中的虚线值

如果brodul.recipe.template part中有虚线值,并且您希望引用它,请使用:

{{context['dashed-value']}}

自定义过滤器

filter函数与filter.py文件中的buildout.cfg位于同一目录中。如果要使用更多的过滤器,请用空格分隔它们。

[buildout]
parts = foo

[foo]
recipe = brodul.recipe.template
input = foo.txt.jinja2
output = foo.txt
jinja2_filters = filter.bar

更改日志

请参见更改日志文件

许可证

请参见许可文件

为什么这个叉子

  • buildout中应该有一个输入和输出选项(因为jinja2解析了'target file'中的'-'字符)
  • 自定义过滤器支持
  • 模板不应具有更改构建状态的能力

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

推荐PyPI第三方库


热门话题
java将数据从一个输入流传输到多个输出流的最佳方式   java如何使用反射机制调用驻留在具有默认可见性的基类中的公共方法?   在Java中将两个不同的方法调用为一个方法   集合的最佳Java线程安全锁定机制?   java在gae中存储json字符串   PHP/Java桥。如何从php服务器连接到桌面应用程序   java Spring:无法持久化用@JsonIgnore注释的实体   基准测试中的java非确定性分配行为   JavaSpring:使用Spring安全性为执行器端点配置安全性   java扩展spring应用程序上下文的最佳方式是什么?   在Mac OS上使用Java向终端窗口发送一些输入   java addInputStream(InputStream InputStream)方法失败   java为什么下面的代码打印为false?   java错误:类按钮中的addActionListener方法无法应用于给定类型;   java在spring数据jpa投影中使用嵌入式值对象   java访问匿名内部类中的变量的干净方法是什么?   java将POJO转换为JSON只返回“id”字段   jvm热点我在哪里可以找到MemoryConsumer。测试内存消耗的java程序?