Jinja模板是否有惯用的文件扩展名?

Chr*_*son 51 python file-extension templates jinja2

我需要以编程方式区分Jinja模板文件,其他模板文件(如ERB)和无模板纯文本文件.

根据Jinja文件:

Jinja模板不需要具有特定的扩展名:.html,.xml或任何其他扩展名就可以了.

但是当需要显式扩展时我应该使用什么?.py是误导性的,包括"jinja"和"extension"在内的任何搜索都被关于Jinja Extensions的讨论严厉搜索.

我可以轻松地规定一个项目范围的惯例(.jnj或者.ja想到),但这是开源的,所以如果已经在某处建立了实践,我不想逆势而行.


编辑1:同样,我理解Jinja项目 - 有目的地 - 没有定义默认文件扩展名.我问的是,是否有任何非官方的惯例出现在某些项目特定原因所需的情况下.


编辑2:澄清:这不适用于HTML内容.

Joh*_*ide 36

Ansible使用.j2扩展名.

我找不到关于这个精确点的权威文档,但是我们.j2在文档的许多地方都看到了扩展的出现:

如果您.j2在以下页面中查找,您将看到许多出现:

http://docs.ansible.com/ansible/template_module.html http://docs.ansible.com/ansible/playbooks_intro.html

除了django模板之外,这也是我用于其他项目的约定.

  • Sublime Text用户可能有兴趣了解它识别.j2扩展名,并且可以,例如,检测*.html.j2是HTML jinja模板.很酷. (5认同)

gee*_*guy 15

我想在 2020 年添加一个额外的答案,因为最近 Jinja2 项目决定从名称中删除“2”......意味着它现在只是“Jinja”。

Ansible 仍然.j2在很多文档中使用,但是现在看到官方 Jinja 模板引擎文档建议.jinja如果您想使用非 Jinja 特定文件扩展名以外的其他内容(请参阅此处的文档,或添加更改时),我认为人们将开始以这种方式移动(并放弃使用.j2.jinja2)。


Big*_*her 14

Jinja作者没有定义默认扩展名.大多数Jinja模板编辑器如Vim扩展,TextMate扩展,Emacs扩展PyCharm都没有提到默认扩展来强制执行Jinja突出显示.

Django已经就设置默认扩展名进行了类似的争论,并以wontfix问题结束.我引用结束语:

基于扩展的文件类型检测由于这些注释中描述的原因而存在缺陷,因此您必须进行一些内部检查,就像MIME类型检测一样.

我建议你应该使用自己的,因为没有常见的.

  • 我用`.jinja2`,哈哈. (22认同)
  • 你是对的,我知道他们没有定义默认(并且这个决定是经过仔细考虑的)但我的项目需要明确的扩展 - 我问是否有任何非正式的约定已经出现(在选择之前)任意一个). (2认同)

小智 11

仅供参考 - 上面提到Johnride使用Ansible .j2作为模板文件的约定是正确的,只是指出了他们现在提出的"最佳实践" ,其中提到:

模板结束 .j2


Kir*_*dda 8

我用.html.jinja2.js.jinja2.css.jinja2等来表示(一)这是一个Jinja2的模板,和(b)将汇编成HTML,JS或CSS文件。我喜欢.j2Ansible 中的选择,但 IMO 的使用.jinja2使新贡献者更容易猜测正在使用什么模板语言。

对于 Flask 用户,因为自动转义很不错:

def _select_jinja_autoescape(filename):
    """
    Returns `True` if autoescaping should be active for the given template name.
    """
    if filename is None:
        return False
    return filename.endswith(('.html', '.htm', '.xml', '.xhtml',
        '.html.jinja', '.html.jinja2', '.xml.jinja', '.xml.jinja2',
        '.xhtml.jinja', '.xhtml.jinja2'))

app.jinja_env.autoescape = _select_jinja_autoescape
Run Code Online (Sandbox Code Playgroud)


Mig*_*ell 7

IntelliJ的PyCharm .jinja2用作识别Jinja2模板的模式。因此,我使用相同的字体(并建议其他人也这样做)

在此处输入图片说明