从另一个类获取RequestHandler对象的上下文

时间:2013-09-11 04:44:54

标签: python google-app-engine

我想要从其他App Engine Python类中使用的Utility类方法:

def parse_query_string_paramter(self, paramter, default=None):

        if self.request.get(paramter):

            # ...

我不确定如何从另一个类调用此方法时传递原始请求的上下文,如下所示:

import webapp2
from utilities import Utility


class Search(webapp2.RequestHandler):

    def get(self):

        utility = Utility()
        search_query = utility.parse_query_string_paramter('q')
        # ...

下面返回的错误对我来说很有意义,Pythonic解决方案虽然我不清楚从哪里开始:

File "~/utilities.py", line 112, in parse_query_string_paramter
    if self.request.get(paramter):
AttributeError: 'NoneType' object has no attribute 'get'

更新

感谢Tim的解决方案,下面更新的代码现在正在为我工​​作:

def parse_query_string_paramter(self, context, paramter, default=None):

        if context.request.get(paramter):

            # ...

并从调用类传递self,如下所示:

search_query = utility.parse_query_string_paramter(self, 'q')

1 个答案:

答案 0 :(得分:1)

您需要将处理程序Search的请求作为参数传递给实例化的Utility类,或者作为parse_query_string_paramter方法的参数,它不能神奇地获取请求对象。 / p>

除此之外,不清楚为什么你会有一个Utility类,除非在请求期间由Utility实例持有某种状态,当你可能只需要一个函数时。