10

Djangoフレームワークでウェブサイトを開発する方法を学んでいます。テンプレートのhtmlファイルについて理解できないことがあります。

チュートリアルで中括弧(<% if ... %> <% endif %>など)を使用してコードにロジックを埋め込んでいるのを見ました。しかし、Django以外のサーバー(Apache)でこの構文を使用しようとすると、この構文は解釈されず<% if ... %>、ページに...が表示されます。

なぜなのかわかりません。

したがって、この構文はHTMLの一部ではなく、Djangoの一部であるため、HTMLで解釈できますか?

4

1 に答える 1

19

何よりもまず、Djangoテンプレート言語の正しいタグは{% %}であり、ではありません<? ?>

そして、あなたはこれがDjangoの一部であることは正しいです。これはドメイン固有言語の例であり、ウィキペディアが言うように、特定のタスクのために発明された言語です。この場合、Djangoテンプレート言語はテンプレートを処理するように構築されています。

Djangoには言語を解釈して理解するためのパーサーが付属しているため、これは機能します。パーサーは、HTMLや{%block pasta%}などの他の言語では意味がない可能性のある文字列を受け取り、それを意味のあるものに変換します。この場合、最終的にHTMLを出力します。

たまたま、Djangoテンプレート言語を解釈するために任意の言語で独自のパーサーを作成したり、まったく新しい言語を作成したりすることもできます。しかし、そのようなタスクの難しさは、あなたの言語がより複雑になるにつれて増加し、またあなたが選択した言語に依存します。PHPは構文解析が苦手なことで有名ですが、Perlのような他の言語はそれが優れていることが知られています。一般に、車輪の再発明を行う代わりに、検索を実行して事前に作成されたパーサーを使用する方がはるかに簡単です。もちろん、それはそれほど楽しい方法ではありませんが:)

psこれはあなたにとって興味深いかもしれません。

于 2013-02-15T03:02:51.270 に答える