2017-04-26 12 views
0

私は、次のミドルウェアがありますDjangoミドルウェアからユーザオブジェクトを取得するにはどうすればいいですか?

class TestMiddleware(): 
    def __init__(self, get_response): 
     self.get_response = get_response 

    def __call__(self, request): 
     print(getattr(request, "user", None)) 
     return self.get_response(request) 

print関数は常にNoneを印刷します。私は、settings.pyのdjango.contrib.auth.middleware.AuthenticationMiddleware行の前後にミドルウェアを追加しましたが、どちらの場合でもNoneが得られます。また、私はユーザーとしてログインしています。

他に何を試すことができますか?私はDjango 1.11を使用しています。

+0

私はこれを元来試みましたが、デバッグの目的で 'getattr'に置き換えました。 – Hassan

答えて

2

ユーザーにアクセスする場合は、ミドルウェアは'django.contrib.auth.middleware.AuthenticationMiddleware'の後にする必要があります。 getattrを使用する必要はありません。ちょうどrequest.userが動作するはずです。ログインしているかどうかによって、ログインしているユーザーかAnonymousUserになります。

+0

さて、私がミドルウェアを 'AuthenticationMiddleware'の後に置くと、それは前に正確に試したと確信していますが、うまくいったのです。ご協力いただきありがとうございます。 – Hassan

関連する問題