GAE Python - 对视图元素使用全局变量字典



我可以使用函数从全局字典变量中读写。

dic = { 'someKey' : 'someVal' }
def f():
    dic['newKey'] = 'newVal'
    print dic['someKey']

我想在模块内的GAE Python中做同样的事情

class MainPage(webapp.RequestHandler):
    def get(self):
        user = users.get_current_user()
        if not user:
            viewValues = {}
            viewValues['login'] = (users.create_login_url(self.request.path))
            self.response.out.write(template.render('view/login.html', viewValues))
        else:
            self.redirect("/")
    viewValues = {'promotion' : [
                                {'icon': 'time_ico.png',
                                 'heading': 'Instant feedback.',
                                 'detail': 'Quiz your students and get instant results!</br>No need to waste time checking answers manually.'},
                                {'icon': 'money_ico.png',
                                 'heading': 'No equipment necessary!',
                                 'detail': 'No need to spend money on special equipment.</br>Use studyWise&copy; free of charge now.'},
                                {'icon': 'cell_ico.png',
                                 'heading': 'Accessible.',
                                 'detail': 'Can be used with any smartphone or laptop, no installation required.'},
                                {'icon': 'statistics_ico.png',
                                 'heading': 'Statistics.',
                                 'detail': 'Get helpful info about your students understanding of the learning material today.'}
                             ]
              }

Traceback (most recent call last):
  File "D:Program FilesGooglegoogle_appenginegoogleappengineextwebapp_webapp25.py", line 701, in __call__
    handler.get(*groups)
  File "C:Current ProjectStudentVoice_Refactorsrclogin.py", line 14, in get
    viewValues['login'] = (users.create_login_url(self.request.path))
NameError: global name 'viewValues' is not defined

为什么会这样?谢谢

在python中完成它的方式是调用self.varName

在AS3/Java中,你可以选择AFAIK,你可以写memberName或this.memberName

但是在python中你不能,必须使用self.memberName而不是memberName。

好吧,猜猜这就解决了。:)