首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保护一些文件从Jinja模板处理器?

如何保护一些文件从Jinja模板处理器?
EN

Stack Overflow用户
提问于 2016-08-25 14:43:23
回答 2查看 1.5K关注 0票数 5

我正在使用cookiecutter创建一个tornado项目,使用的是this template (它有几个bug,所以你可能无法开箱即用)。我遇到了一个我不知道如何解决的问题:

代码语言:javascript
运行
复制
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模板的问题,但不确定如何指定。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-26 01:19:17

默认情况下,cookiecutter会尝试将每个文件作为jinja模板处理,如果您有一些看起来像jinja模板但应该只接受文字的东西,这会产生错误的结果。从cookiecutter 1.1开始,可以告诉cookiecutter只复制一些文件,而不是将它们解释为jinja模板(documentation)。

为此,您必须在cookiecutter配置文件(cookiecutter.json)中添加_copy_without_render密钥。它需要一个正则表达式列表。如果文件名与正则表达式匹配,则会复制该文件名,而不会将其作为jinja模板处理。

示例

代码语言:javascript
运行
复制
{
    "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。它们只会被复制。

票数 5
EN

Stack Overflow用户

发布于 2017-05-12 00:18:17

刚刚遇到了这个问题,还有这个Github Issue

这似乎是一个很好的补充,可以使用{% raw %}标签将文件的部分或整个模板标记为不被处理:

代码语言:javascript
运行
复制
{% raw %}
{% comment %}Whatever jinja code goes here....{% endcomment %}
...
{% endraw %}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39138386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档