1

我收到以下错误:

'AnonymousUser' 对象没有属性 '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 语句的第一行。

在此先感谢您的帮助!

4

2 回答 2

3

对于未登录的用户,request.userAnonymousUser实例,其中不包含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')
于 2012-04-12T15:50:45.533 回答
0

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')
于 2012-04-12T15:13:44.977 回答