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 に答える