2016-08-24 10 views
0

私はカスタムミドルウェアを持っています。私はカスタムミドルウェアを持っていて、process_view中にトークンを取得しています。そして、このトークンをレンダリング結果htmlに渡す必要があります。django middleware.process_viewからテンプレートコンテキストにデータを渡す

私はcontext_processorがコンテキストを変更するのに適していると思っていましたが、ミドルウェアから一部のデータをプロセッサに渡すのは難しいようです。

しかし、process_viewとコンテキストプロセッサで通信する唯一の方法はリクエストオブジェクトだと思われます。そして、もし私が 'WSGIRequest'オブジェクトがアイテム割り当てのエラーをサポートしていないという要求に任意のフィールドを設定すると、ここにコードがあります:

def process_view(self, request, view_func, view_args, view_kwargs): 
    ... 
    with log(request, view_func.__name__, info) as id: 

     request['TOKEN_ID'] = logger.get().get_id() #here is an error 
     response = view_func(request, *view_args, **view_kwargs) 

私は間違ったことをしています。 middleware.process_viewとcontext_processorに通信する方法はありますか?それとも、ミドルウェアからHTMLにデータを渡す別の方法を変更する必要がありますか?あなたは辞書項目の割り当てを試してみて、使用するときにエラーが発生し

答えて

1

request['my_key'] = 'my_value' 

しかし、要求が辞書ではありません、それはオブジェクトです。 Djangoモデルのように、すべてのオブジェクトと同様に、アイテムではなく属性を設定する必要があります。

request.my_attribute = 'my_value' 

(次回は、あなたが使用したコードと、あなたが得た完全なトレースバックを表示してください。)

+0

うん、私はコードを追加しようと思ったが、実際にそれは私が信じていることをとても簡単で、「デフォルト」に見えましたそれは必要ではないということです。とにかく、それは私のコードの問題だったので、私はそれを追加しました。ありがとう! – Paul

関連する問題