2017-05-14 4 views
1

私はDjango 1.10プロジェクトで私の最初のミドルウェアを考え出しています。 zeon.utilsからDjangoでミドルウェアを定義しようとしたときに位置引数エラーが表示されない

は、私が何を把握しようとして失われていますRequestLogThread

class StartRestEndPointMiddleWare(object): 
    def __init__(self, get_response): 
     self.get_response = get_response 
     # One-time configuration and initialization. 

    def __call__(self, request): 
     # Code to be executed for each request before 
     # the view (and later middleware) are called. 
     request.request_log_id = RequestLogThread('send_contact', request.data).start() 

     response = self.get_response(request) 

     # Code to be executed for each request/response after 
     # the view is called. 

     return response 

をインポートします。そして現在、私はこのようなmiddleware.pyでミドルウェアを定義した次のエラー

TypeError: init() missing 1 required positional argument: 'get_response'

に実行していますすべてがdocに従っているようだから間違っている。私は本当に何かヒントに感謝します。

UPDATE: 私はmiddle_classesにそれを置く:

MIDDLEWARE_CLASSES = [ 
    'zeon.middleware.StartRestEndPointMiddleWare', 
] 
+0

あなたは 'MIDDLEWARE'ディクショナリまたは' MIDDLEWARE_CLASSES'ディクショナリに配置していますか? – Blender

+0

私はあなたの質問 –

答えて

2

Djangoはミドルウェアクラスは1.10で働いていた方法を変更しました。あなたがMIDDLEWARE_CLASSESにあなたのミドルウェアを置くとき

MIDDLEWARE = [ 
    'zeon.middleware.StartRestEndPointMiddleWare', 
] 

、それは異なる動作を古いスタイルのミドルウェアとして扱われています:新しいスタイルのミドルウェアクラスは、このように、MIDDLEWAREリストに属しています。より良いエラーメッセージがこれをより明確にしたかもしれません。

+0

とミドルウェアの残りの部分について質問に従って更新しましたか?私はそれらを 'MIDDLEWARE_CLASSES'に残し、ユーザ定義のミドルウェアだけを' MIDDLEWARES'に移動する必要がありますか?それとも、すべてを「ミドルウォーズ」に置くべきですか? –

+0

'MIDDLEWARES'ではなく' MIDDLEWARE'であるように見えます。 –

+0

@EdgarNavasardyan:ありがとうございました。組み込みのミドルウェアはすべて両方をサポートしているので、おそらくすべてを「MIDDLEWARE」に移すことができます。 'MIDDLEWARE'と' MIDDLEWARE_CLASSES'を同時に使うことはできません。 – Blender

関連する問題