2012-04-12 6 views
1

ich die folgende Fehlermeldung erhalten:django profies und request.user - Fehler

'AnonymousUser' object has no attribute 'get_profile'

, nachdem ich die folgende Middleware hinzugefügt, und versuchen Sie auf meiner Website anmelden, ohne vorher angemeldet zu haben:

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

In der Rückverfolgung tritt der Fehler in der ersten Zeile der try-Anweisung auf.

Vielen Dank im Voraus für die Hilfe!

+0

schützen die Linie ‚wenn request.user.is_authenticated():‘ – okm

+0

Dank, das funktioniert. Ich freue mich, Ihre Antwort als die richtige zu markieren, wenn Sie sie als Antwort einreichen. Danke noch einmal – mb52089

Antwort

3

Für nicht angemeldeten Benutzer versuchen, ist request.userAnonymousUser Instanz, die nicht get_profile enthält. Wir könnten überprüfen, ob ein request.user angemeldet wurde und schützen Logik für angemeldete Benutzer von 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') 
0

request.user.get_profile() wahrscheinlich ein Attribut wirft, sollen Sie die folgenden

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