在Django中,我如何知道當前登錄的用戶?


Answers

擴展@ vikingosegundo的答案,如果你想在模型裡面獲得用戶名,我找到了一個涉及聲明一個MiddleWare的方法。 在你的應用程序中創建一個名為get_username.py的文件,內容如下:

from threading import current_thread

_requests = {}

def get_username():
    t = current_thread()
    if t not in _requests:
         return None
    return _requests[t]

class RequestMiddleware(object):
    def process_request(self, request):
        _requests[current_thread()] = request

編輯您的settings.py並將其添加到MIDDLEWARE_CLASSES

MIDDLEWARE_CLASSES = (
    ...
    'yourapp.get_username.RequestMiddleware',
)

現在,在你的save()方法中,你可以得到像這樣的當前用戶名:

from get_username import get_username

...

def save(self, *args, **kwargs):
    req = get_username()
    print "Your username is: %s" % (req.user)
Question

在Django中,我如何知道當前登錄的用戶?