我正在使用cookiecutter创建一个tornado项目,使用的是this template (它有几个bug,所以你可能无法开箱即用)。我遇到了一个我不知道如何解决的问题:
jinja2.exceptions.TemplateSyntaxError: unexpected char '\\' at 124272
File "./{{cookiecutter.project_slug}}/static/swagger/lib/jsoneditor.min.js", line 10我不确定,但我的印象是cookiecutter正在试图对jsoneditor.min.js进行Jinja处理,这是不应该发生的,因为该文件中的“模板”不应该由cookiecutter处理,它只是碰巧包含了Jinja正在使用的相同转义字符。
有没有可能告诉cookiecutter不要处理某个目录中的文件?这可能是正确设置cookiecutter模板的问题,但不确定如何指定。
发布于 2016-08-26 01:19:17
默认情况下,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中的任何文件,而不是rendered_dir中的not_rendered_file.ini。它们只会被复制。
发布于 2017-05-12 00:18:17
刚刚遇到了这个问题,还有这个Github Issue。
这似乎是一个很好的补充,可以使用{% raw %}标签将文件的部分或整个模板标记为不被处理:
{% raw %}
{% comment %}Whatever jinja code goes here....{% endcomment %}
...
{% endraw %}https://stackoverflow.com/questions/39138386
复制相似问题