如何保护Jinja模板处理器中的某些文件?

时间:2016-08-25 06:43:23

标签: python cookiecutter

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

cookiecutter

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

是否可以告诉cookiecutter不要处理某个目录中的文件?这可能是正确设置<script> $('nav a').on('click', function() { var scrollAnchor = $(this).attr('data-scroll'), scrollPoint = $('section[data-anchor="' + scrollAnchor + '"]').offset().top - 150; $('body,html').animate({ scrollTop: scrollPoint }, 500); return false; }) $(window).scroll(function() { var windscroll = $(window).scrollTop(); if (windscroll >= 100) { $('.wpb_wrapper section').each(function(i) { if ($(this).position().top <= windscroll - 20) { $('nav a.active').removeClass('active'); $('nav a').eq(i).addClass('active'); } }); } else { $('nav').removeClass('fixed'); $('nav a.active').removeClass('active'); $('nav a:first').addClass('active'); } }).scroll(); </script>模板的问题,但不确定如何指定。

2 个答案:

答案 0 :(得分:2)

刚刚遇到了这个问题以及Github Issue

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

{% raw %}
{% comment %}Whatever jinja code goes here....{% endcomment %}
...
{% endraw %}

答案 1 :(得分:1)

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

为此,您必须在cookiecutter配置文件(_copy_without_render)中添加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.ini中的rendered_dir。它们只会被复制。