2011-12-24 16 views
2

のレンダリング中VariableDoesNotExistをキャッチ私はyourlabs更新サブスクリプションの例を使用しようとしている、とインストールは、サブスクリプションのアプリでそのyourlabsサブスクリプション・エラー -

  • ビューの各除いてうまく働いてい返しますテンプレートへのレンダリングの変数を要求します。

  • このrequest context変数はテンプレート内に受信されないと、結果として、私はこの問題を解決することはできません。この以来

    Caught VariableDoesNotExist while rendering: Failed lookup for key [request] in u

は、すべてのビューに返される次のエラーを取得しています特定のテンプレートでいくつか微調整を行うことで問題が発生する

+0

yourlabs-subscriptionのビューはshortcuts.renderを使用し、コンテキスト内でリクエストオブジェクトを渡しません。これはコンテキストオブジェクトを実行できるように、リクエストオブジェクトをdjango.shortcut.renderに渡します。 django.core.context_processors.requestはコンテキスト内でリクエストを設定するコンテキストプロセッサです。 – jpic

答えて

2

requestがテンプレートのコンテキストになく、テンプレートがexpecというテンプレートコードを使用しているためそれがそこにあると言いました。このコード(たとえば、カスタムテンプレートタグ)better handleVariableDoesNotExist

また、あなたの意見は、おそらく、明示的にすべての応答にrequestを返すべきではないはずです。 Djangoがあなたのためにこれを処理させてください。

これを行うには、あなたのTEMPLATE_CONTEXT_PROCESSORSにジャンゴとrequest template context processorその船を追加します。

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'django.core.context_processors.request', 
    ... 
) 

すでにこのテンプレートのコンテキストプロセッサを使用している場合は、(以下render_to_responseは、最後の引数としてcontext_instance=RequestContext(request)と呼ばれていることを確認例)docsからのものである:

def some_view(request): 
# ... 
return render_to_response('my_template.html', 
          my_data_dictionary, 
          context_instance=RequestContext(request)) 

これは、すべてのdictsがにテンプレートコンテキストプロセッサによって返されることを保証しますがテンプレートに渡されます。

rendershortcutを使用すると、Requestcontextのインスタンスで自動的にテンプレートがレンダリングされます。

Django 1.3で追加された別のオプションはTemplateResponseで、RequestContextのインスタンスも使用します。

+0

レンダリングのショートカット*は、yourlabs-subscriptionビューが使用するものです。 – jpic

関連する問題