我想在每次创建类的实例时获取self.request.get('foo')
和etal的值,因此我决定使用__init__
构造函数。这是我的代码:
class archive(handler):
d = dict(title='',author= '')
def __init__(self):
self.d['title'] = self.request.get('title')
self.d['author'] = self.request.get('author')
class compose(handler):
def get(self):
self.render('compose.html')
def post(self):
a = archive()
我的目的是,摆脱重复:
title = self.request.get('title')
author = self.request.get('author')
每个def post(self)
中的。但问题是我收到NoneType
错误:
AttributeError: 'NoneType' object has no attribute 'get'
显然,self.request.get('title')
返回None。我是Python和Google Appengine的新手。
谢谢你们。
答案 0 :(得分:1)
这就是我设法解决问题的方法:
class Archive(object):
d = dict(title='',author= '')
def load_d(self):
r = webapp2.get_request()
self.d['title'] = r.get('title')
self.d['author'] = r.get('author')
class Compose(Handler):
def get(self):
self.render('compose.html')
def post(self):
a = Archive()
a.load_d()
答案 1 :(得分:0)
我假设你使用webapp2。
您的init会覆盖webapp2请求处理程序的init(超级)。您可以在webapp2文档中阅读如何:
http://webapp-improved.appspot.com/guide/handlers.html#overriding-init
使用变量(self.variable)时要小心,因为您还可以覆盖请求处理程序的变量。您可以使用请求注册表。