UnboundLocalError:局部变量…在分配前被引用


问题内容

我得到一个UnboundLocalError因为在不执行的if语句中使用模板值。处理这种情况的标准方法是什么?

class Test(webapp.RequestHandler):
    def get(self):      
        user = users.get_current_user()
        if user:
            greeting = ('Hello, ' + user.nickname())
        else:
            self.redirect(users.create_login_url(self.request.uri))
...

        template_values = {"greeting": greeting,
                       }

错误:

UnboundLocalError: local variable 'greeting' referenced before assignment

问题答案:

只需切换:

class Test(webapp.RequestHandler):
    def err_user_not_found(self):
        self.redirect(users.create_login_url(self.request.uri))
    def get(self):      
        user = users.get_current_user()
        # error path
        if not user:
            self.err_user_not_found()
            return

        # happy path
        greeting = ('Hello, ' + user.nickname())
        ...
        template_values = {"greeting": greeting,}