4

タイトルが示すように、Google App Engine と Django を使用しています。

テンプレート全体でかなりの同一のコードがあり、テンプレート ファイルを含めることでこれを減らしたいと考えています。したがって、メイン アプリケーション ディレクトリには、python ハンドラ ファイル、メイン テンプレート、およびメイン テンプレートに含めるテンプレートがあります。

{% include "fileToInclude.html" %} を含めることは単独で機能すると考えていましたが、何も含まれていません。おそらくTEMPLATE_DIRSを使用して何かを設定する必要があると思いますが、自分でそれを理解することはできません。

編集:

私はもう試した:

TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), 'templates'), )

しかし、役に立たない。他の可能性も試してみます。

4

4 に答える 4

3

まず、タグではなくテンプレートの継承を使用することを検討する必要があります。これは、多くの場合適切ですが、テンプレートの継承よりもはるかに劣る場合があります。include

残念ながら、私は App Engine の経験がありませんが、通常の Django の経験から、TEMPLATE_DIRSあなたが示したように、テンプレートを含めたいフォルダを含むようにリストを設定する必要があると言えます。

于 2009-01-22T18:07:57.097 に答える
1

最初にテンプレートを読み込んで Context オブジェクトでレンダリングしないと、「すぐに」動作することがわかりました。代わりに、AppEngine チュートリアルに示されている標準的な方法を使用します。

于 2009-02-02T20:25:05.583 に答える
1

私は同じ問題を抱えており、それを ext.webapp パッケージに追跡しました。template.py の 33 行目に次のコメントがあります。

Django は、テンプレートを探すディレクトリにグローバル設定を使用します。これは webapp モジュールのコンテキストでは自然ではないため、load メソッドは完全なテンプレート パスを受け取り、これらの設定をオンザフライで自動的に設定します。すべてのメソッド呼び出しでグローバル設定を設定して使用する必要があるため、このモジュールはスレッドセーフではありませんが、アプリケーションの問題ではありません。

同じファイルの 92 行目を参照してください。テンプレート ディレクトリが圧縮されているのがわかります。

directory, file_name = os.path.split(abspath)
new_settings = {
    'TEMPLATE_DIRS': (directory,),
    'TEMPLATE_DEBUG': debug,
    'DEBUG': debug,
    }

更新: これは私のために働いた回避策です - http://groups.google.com/group/google-appengine/browse_thread/thread/c3e0e4c47e4f3680/262b517a723454b6?lnk=gst&q=template_dirs#262b517a723454b6

于 2011-04-23T02:22:30.747 に答える
0

インクルードの使用を回避するために、次のことを行いました。

def render(file, map={}):
  return template.render(
    os.path.join(os.path.dirname(__file__), '../templates', file), map)  

table = render("table.html", {"headers": headers, "rows": rows})   
final = render("final.html", {"table": table})

self.response.out.write(final)
于 2010-05-25T16:58:12.603 に答える