如何从 Jinja 模板处理器中保护一些文件?
How to protect some files from the Jinja template processor?
我正在使用 cookiecutter 创建一个龙卷风项目,使用 this template(它有几个错误,所以您可能无法开箱即用)。我遇到了一个我不知道如何解决的问题:
jinja2.exceptions.TemplateSyntaxError: unexpected char '\' at 124272
File "./{{cookiecutter.project_slug}}/static/swagger/lib/jsoneditor.min.js", line 10
我不确定,但我的印象是 cookiecutter
正在尝试 Jinja 处理 jsoneditor.min.js
,这是不应该发生的,因为 "templating" 在那个文件不应由 cookiecutter
处理,它恰好包含 Jinja
正在使用的相同转义字符。
是否可以告诉cookiecutter
不要处理某个目录中的文件?这可能是正确设置 cookiecutter
模板的问题,但不确定如何指定。
默认情况下,cookiecutter 会尝试将每个文件作为 jinja 模板进行处理,如果您有一些看起来像 jinja 模板但只应按字面意义处理的文件,则会产生错误的结果。从 cookiecutter 1.1 开始,可以告诉 cookiecutter 只复制一些文件而不将它们解释为 jinja 模板 (documentation)。
为此,您必须在 cookiecutter 配置文件 (cookiecutter.json
) 中添加一个 _copy_without_render
键。它需要一个正则表达式列表。如果文件名与正则表达式匹配,它将被复制而不作为 jinja 模板处理。
示例
{
"project_slug": "sample",
"_copy_without_render": [
"*.js",
"not_rendered_dir/*",
"rendered_dir/not_rendered_file.ini"
]
}
这不会处理任何 javascript 文件(以 .js
结尾的文件),not_rendered_dir
中的任何文件,而不是 not_rendered_file.ini
中的任何文件 rendered_dir
。他们只会被复制。
刚刚遇到这个问题,还有这个 Github Issue。
这似乎是一个不错的补充,可以使用 {% raw %}
标记部分标记文件的一部分或整个模板不进行处理:
{% raw %}
{% comment %}Whatever jinja code goes here....{% endcomment %}
...
{% endraw %}
我正在使用 cookiecutter 创建一个龙卷风项目,使用 this template(它有几个错误,所以您可能无法开箱即用)。我遇到了一个我不知道如何解决的问题:
jinja2.exceptions.TemplateSyntaxError: unexpected char '\' at 124272
File "./{{cookiecutter.project_slug}}/static/swagger/lib/jsoneditor.min.js", line 10
我不确定,但我的印象是 cookiecutter
正在尝试 Jinja 处理 jsoneditor.min.js
,这是不应该发生的,因为 "templating" 在那个文件不应由 cookiecutter
处理,它恰好包含 Jinja
正在使用的相同转义字符。
是否可以告诉cookiecutter
不要处理某个目录中的文件?这可能是正确设置 cookiecutter
模板的问题,但不确定如何指定。
默认情况下,cookiecutter 会尝试将每个文件作为 jinja 模板进行处理,如果您有一些看起来像 jinja 模板但只应按字面意义处理的文件,则会产生错误的结果。从 cookiecutter 1.1 开始,可以告诉 cookiecutter 只复制一些文件而不将它们解释为 jinja 模板 (documentation)。
为此,您必须在 cookiecutter 配置文件 (cookiecutter.json
) 中添加一个 _copy_without_render
键。它需要一个正则表达式列表。如果文件名与正则表达式匹配,它将被复制而不作为 jinja 模板处理。
示例
{
"project_slug": "sample",
"_copy_without_render": [
"*.js",
"not_rendered_dir/*",
"rendered_dir/not_rendered_file.ini"
]
}
这不会处理任何 javascript 文件(以 .js
结尾的文件),not_rendered_dir
中的任何文件,而不是 not_rendered_file.ini
中的任何文件 rendered_dir
。他们只会被复制。
刚刚遇到这个问题,还有这个 Github Issue。
这似乎是一个不错的补充,可以使用 {% raw %}
标记部分标记文件的一部分或整个模板不进行处理:
{% raw %}
{% comment %}Whatever jinja code goes here....{% endcomment %}
...
{% endraw %}