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模板之外,这也是我用于其他项目的约定.
Big*_*her 14
Jinja作者没有定义默认扩展名.大多数Jinja模板编辑器如Vim扩展,TextMate扩展,Emacs扩展和PyCharm都没有提到默认扩展来强制执行Jinja突出显示.
Django已经就设置默认扩展名进行了类似的争论,并以wontfix问题结束.我引用结束语:
基于扩展的文件类型检测由于这些注释中描述的原因而存在缺陷,因此您必须进行一些内部检查,就像MIME类型检测一样.
我建议你应该使用自己的,因为没有常见的.
我用.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)
| 归档时间: |
|
| 查看次数: |
17344 次 |
| 最近记录: |