我收到以下错误:
"匿名用户"对象没有属性"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')