web-dev-qa-db-ja.com

Jinjaテンプレート用の慣用的なファイル拡張子はありますか?

Jinjaテンプレートファイル、他のテンプレートファイル(ERBなど)、およびテンプレートのないプレーンテキストファイルをプログラムで区別する必要があります。

Jinjaドキュメント によると:

Jinjaテンプレートには特定の拡張子を付ける必要はありません:.html、.xml、またはその他の拡張子は問題ありません。

しかし、明示的な拡張が必要な​​場合はどうすればよいですか? .pyは誤解を招く恐れがあり、「jinja」および「extension」という単語を含む検索は、 Jinja Extensions をめぐる議論によってひどく洗い流されます。

プロジェクト全体の規約を簡単に指定できました(.jnjまたは.ja頭に浮かぶ)が、これはオープンソース向けであるため、既にどこかで慣行が確立されている場合、トレンドに逆らうことはしたくない。


EDIT 1:繰り返しますが、Jinjaプロジェクトは(意図的に)デフォルトのファイル拡張子を定義しないことを理解しています。何らかのプロジェクト固有の理由で望まれる状況のために出現した非公式の慣習があるかどうかを尋ねています。


EDIT 2:明確化:これはHTMLコンテンツ用ではありません。

48
Chris Tonkinson

Jinja Authorsはデフォルトの拡張子を定義しませんでした。 Vim拡張TextMate拡張Emacs拡張 、および PyCharm などのほとんどのJinjaテンプレートエディターは、 Jinjaの強調表示を強制します。

Djangoはすでに 同様の議論 でデフォルトの拡張子を設定し、wontfix問題として終了しました。最後のメッセージから引用します。

拡張子に基づくファイルタイプの検出は、これらのコメントで説明されているまさにその理由で欠陥があるため、MIMEタイプの検出が機能するように、内部検査を行う必要があります。

一般的なものはないため、独自のものを使用することをお勧めします。

12
BigOther

Ansibleは.j2拡張を使用します。

私はその正確なポイントに関する明確なドキュメントを見つけることができませんでしたが、ドキュメントの多くの場所で.j2拡張の発生を確認しています:

次のページで.j2を検索すると、多くの発生が表示されます。

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

これは、Djangoテンプレートを除く、他のプロジェクトにも使用する規則です。

32
Johnride

ちょうど参考までに、Ansibleについて.j2正しいテンプレートファイルの慣習として、文書化された「ベストプラクティス」を指摘するだけです 今出した

テンプレートの末尾は.j2

9
rd2

IntelliJのPyCharmは.jinja2 Jinja2テンプレートを認識するためのパターンとして。そのため、私は同じものを使用します(他の人も同じように使用することをお勧めします)

enter image description here

6
Miguel

.html.jinja2.js.jinja2.css.jinja2などを使用して、(a)Jinja2テンプレートであり、(b)HTML、JS、またはCSSファイルにコンパイルされることを示します。私はAnsibleの.j2の選択が好きですが、.jinja2を使用するIMOにより、新しい貢献者がどのテンプレート言語が使用されているかを推測しやすくなります。

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
4

.jnj拡張子を使用します。また、構文の強調表示とvimのスニペットに、 twig の設定をコピー、名前変更、および微調整しました。

Jinjaテンプレートでhtmlの設定(コメント、タグバランシング、インデントなど)が必要な場合、PHPおよびWordPress-htmlに切り替わり、前のファイルタイプに戻ります。

_let g:my_file_type = 0

function! ToggleFileType()
  if g:my_file_type == 0
      set ft=html
      let g:my_file_type = 1
  else
      filetype detect
      let g:my_file_type = 0
  endif
endfunction
_

そして、nmap <silent> <F12> :call ToggleFileType()<CR>でF12キーにバインドされます

2
elemel21