django profies and request.user语言 - error



我收到以下错误:

"

匿名用户"对象没有属性"get_profile"

在我添加了以下中间件后,并尝试在没有登录之前登录的情况下登录到我的站点:

class TimezoneMiddleware(object):
    def process_request(self, request):
        try:
            driver = request.user.get_profile()
            timezone.activate(driver.timezone)
        except ObjectDoesNotExist:
            timezone.activate('UTC')

在回溯中,错误发生在 try 语句的第一行。

提前感谢您的帮助!

对于未登录的用户,request.user AnonymousUser实例,不包含get_profile 。我们可以检查request.user是否已登录,并通过if request.user.is_authenticated():保护登录用户的逻辑

def process_request(self, request):
    if request.user.is_authenticated(): 
        try:
            driver = request.user.get_profile()
            timezone.activate(driver.timezone)
        except ObjectDoesNotExist:
            timezone.activate('UTC')

request.user.get_profile() 可能会引发 AttributeError,您应该尝试以下操作

class TimezoneMiddleware(object):
    def process_request(self, request):
        try:
            driver = request.user.get_profile()
            timezone.activate(driver.timezone)
        except ObjectDoesNotExist, AttributeError:
            timezone.activate('UTC')

最新更新