2011-02-05 5 views
1

私は間違ってはいませんが、私はsettings.pyファイルの隣に自分のHTMLを置くのではなく、TEMPLATE_DIRリストにプロジェクトディレクトリ(settings.pyファイルを含む)を追加するので、テンプレートを'app/template/file.html'と命名してください。プロジェクトのディレクトリをDjangoのテンプレートディレクトリとして使うのは悪い考えですか?

Djangoにテンプレートの名前空間が付いていないのはなぜだろうかと思っていました。

  1. すべてのアプリケーションとは別のテンプレートディレクトリを作成し、各アプリケーションのディレクトリを作成してHTMLを配置します。
  2. 各アプリケーションdirにテンプレートdirを作成し、アプリケーション名で別のdirを作成してからHTMLを入れます。

    1. 力がアプリ外で、あなたのHTMLを持っている:

    これがあるため、理想的な未満です。プラグイン可能であるほど。

  3. は、冗長ディレクトリツリーを作成するように強制してDRYに違反します。project_dir/app_name/template/appnameそうでなければ、'index.htmlという名前の複数のテンプレートがあると、大きな時間が掛かります。

だから、それだけですべてのテンプレートファイル'app_name/template/file.html'を呼び出すためのテンプレートディレクトリとして、プロジェクトのディレクトリを定義するための悪い考えですか?はいの場合、なぜですか?あなたはどうやってそれをきれいにしますか?

答えて

0

私は個人的にはアプリ関連のテンプレートではapp_name/templates、グローバルテンプレートではprojects/templatesを使用します。個人的には、私は自分のアプリと自分のプロジェクトとの間の疎結合が本当に好きなので、これは便利だと思うので、私はそれらを切り離しておく傾向があります。

しかし、djangoはあなたに選択の自由を与えます。あなたがうまくいくと感じたら、私は何の問題も見ません。

+2

あなたは 'app_directories'テンプレートローダーを使用しますと思いますか?これの問題は、appのテンプレートを 'app_name/templates/app_name'に入れない限り、テンプレートローダーはそのアプリのテンプレートをルートにあるものとみなします。例えば、 'my_app'の' home.html'テンプレートを使うには 'app_name/home.html'と反対の' home.html'と呼ぶ必要があります。 –

+0

正しい。名前の衝突は 'app/temp/app'スキームがなければ簡単になります。あなたのアプリテンプレートの名前を別々に指定しない限り、' generic.html'テンプレートがアプリに存在し、最初に読み込まれることを保証できます。しかし、それがあなたのロールであるなら害はない!これは強く型付けされたものと弱いもののどちらかの議論のようなものです。 –

+0

+1 Nimmy Lebby。あなたはこれと衝突する危険があります。 @ユージー:あなたはあなたの仕事の仕方について厳密にすることができますが、遅かれ早かれ、いわゆる "プラグイン可能なアプリケーション"を使用する必要がありますし、問題が始まります。 –

0

app_directoriesテンプレートローダーが機能する方法に対して面白い議論をします。テンプレートを使ってアプリケーションのルートディレクトリを汚染する以外に、私は何かが間違っていると考えることはできません。

代わりに独自のテンプレートローダーを作成する際に調査する価値はありますか?

+0

私はそれについて考えていますが、ルートディレクトリを使って簡単なものがあれば、それは残忍だと感じています。今あなたが正しいです、あなたはあなたのPythonファイルとHTMLのミックスアップに終わらないことを確かめなければなりません。しかし、私はサードパーティのアプリケーションがそのような場合にどのように反応するのだろうか。セキュリティ上の問題につながる可能性はありますか? –

関連する問題