0

これらの関数はまったく同じように機能するはずではありませんか?

def IndexView(request):
    return direct_to_template(request, template='index.html')

def IndexView2(request):
    return render_to_response('index.html',
                              {'request': request},
                              context_instance=RequestContext(request))

両方の違いを尋ねているわけではありませんが、direct_to_template を使用するときにテンプレートで {{request}} を使用できないのはなぜですか...似たような質問をたくさん読みましたが、まだわかりません。

誰も理由を知っていますか?ありがとう、

4

2 に答える 2

2

その理由は、 (すべての一般的なビューと同様に)direct_to_template実際にはRequestContext(request)デフォルトで使用されているためです。つまり、すべてのテンプレート コンテキスト プロセッサがテンプレートで使用可能です (変数をアクセス可能django.core.context_processors.requestにするものを含む)。request

を使用すると、すべてのテンプレート コンテキスト プロセッサ ( settings.py でRequestContext定義され ている) がスキャンされ、それらがテンプレートで使用できるようにコンテキストに自動的に追加されます。ドキュメントから:TEMPLATE_CONTEXT_PROCESSORS

2 つ目の違いは、TEMPLATE_CONTEXT_PROCESSORS の設定に従って、コンテキストにいくつかの変数が自動的に入力されることです。

于 2012-08-17T01:26:35.330 に答える
-1

settings.py の TEMPLATE_CONTEXT_PROCESSORS に django.core.context_processors.request を追加する必要があります。

于 2012-08-16T23:51:02.143 に答える