python - 如何保护一些文件免受 Jinja 模板处理器的影响?

标签 python cookiecutter

我正在使用 cookiecutter 创建一个 Tornado 项目,使用 this template (它有几个错误,因此您可能无法立即使用它)。我遇到了一个我不知道如何解决的问题:

jinja2.exceptions.TemplateSyntaxError: unexpected char '\\' at 124272
  File "./{{cookiecutter.project_slug}}/static/swagger/lib/jsoneditor.min.js", line 10

我不确定,但我的印象是 cookiecutter正在尝试对 jsoneditor.min.js 进行 Jinja 处理,这是不应该发生的,因为该文件中的"template"不应该由 cookiecutter 处理。 ,它恰好包含与 Jinja 相同的转义字符正在使用。

可否告知cookiecutter不处理某个目录内的文件?这可能是正确设置 cookiecutter 的问题。模板,但不确定如何指定。

最佳答案

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

为此,您必须添加 _copy_without_render键入 cookiecutter 配置文件 ( cookiecutter.json )。它需要一个正则表达式列表。如果文件名与正则表达式匹配,它将被复制而不是作为 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.inirendered_dir .他们只会被复制。

关于python - 如何保护一些文件免受 Jinja 模板处理器的影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39138386/

相关文章:

python - (keyError : 'CELERY_BROKER_URL' )

python - 我可以根据 cookiecutter.json 中变量的值使文件可选吗

python - 如何在 Python 中执行等效的 Excel INDEX MATCH

python - 从扫描的工程图纸中提取文本

python - 将 Pandas 数据框拆分为子数据框列表的最快方法

python - 使用cookiecutter捕获eval()SyntaxError的问题

cookiecutter - 如何在 cookiecutter 中使用机器生成的变量

git - 使用 cookiecutter 创建一个 git 版本的项目

python - View 中的 Django 过滤器

Python 链式 get() 方法与 JSON 中的列表元素