我有一个RequestHandler的子类:
class GetStats(webapp2.RequestHandler):
somevar = None
def post(self):
...
somevar = "somevalue"
并且创建了这个类的实例:
application = webapp2.WSGIApplication([
('/stats', GetStats),
], debug=True)
那么,我的问题是:我如何才能在class GetStats之外得到一些值呢?
我没有这个类的实例名。
如果不将此值保存到全局var中,就有可能吗?
一些更新:
可以创建class Route
的某些实例
mp = webapp2.Route('/', handler=MainPage)
gs = webapp2.Route('/stats', handler=GetStats)
并以这种方式初始化application
:
application = webapp2.WSGIApplication([mp,gs], debug=True)
但是无论如何,没有GetStats类实例的名称。
在本例中有实例化吗?handler=GetStats
如何能够直接创建GetStats实例?
发布于 2014-10-24 06:14:21
对于每个请求,将创建处理程序的新实例。
解决此问题的唯一方法是在请求注册表中保存处理程序实例。
替代方式:使用webapp2注册表
class GetStats(webapp2.RequestHandler):
def post(self):
...
somevar = "somevalue"
application.registry['variable'] = somevar
...
# outside class
application.registry.get('variable')
这样可以避免模块中的全局变量。
发布于 2014-10-21 07:54:06
您可以将其写入数据存储:
from google.appengine.ext import db
class someVarClass(db.Model):
somevarField = db.StringProperty(required=True)
class GetStats(webapp2.RequestHandler):
somevar = None
def post(self):
...
somevar = "somevalue"
u = someVarClass(somevarField= somevar)
u.put()
https://stackoverflow.com/questions/26490681
复制相似问题