使用webapp2处理程序Python GAE

时间:2016-05-14 13:53:25

标签: python google-app-engine

请考虑以下代码:

class Activate(BaseHandler):
    def get(self, key):
    self.response.out.write(key)
application = webapp2.WSGIApplication([('/activationlink/([^/]+)?', Activate)],debug=True,config=config)

我想知道处理程序如何“知道”/ activationlink /之后的部分实际上是关键字?是模式/字符串/ string2的每个URL都将key = string2发送给处理程序吗?如果是这样,它是否在webapp2.RequestHandler类中设置?

2 个答案:

答案 0 :(得分:0)

来自webapp2中的简单路线部分URI routing

class ProductHandler(webapp2.RequestHandler):
    def get(self, product_id):
        self.response.write('This is the ProductHandler. '
            'The product id is %s' % product_id)

app = webapp2.WSGIApplication([
    (r'/', HomeHandler),
    (r'/products', ProductListHandler),
    (r'/products/(\d+)', ProductHandler),
])
     

...

     

正则表达式部分是一个普通的正则表达式(参见re模块)   可以在括号内定义组。匹配的组值   作为位置参数传递给处理程序。在示例中   上面,最后一个路由定义了一个组,因此处理程序将接收到   路由匹配时匹配的值(此处的一个或多个数字)   情况)。

在您的情况下,([^/]+)是相关的正则表达式组,它将匹配的内容转换为传递给key的{​​{1}}。

答案 1 :(得分:0)

看一下这个例子:

class ProductHandler(webapp2.RequestHandler):
def get(self, product_id):
    self.response.write('You requested product %r.' % product_id)

app = webapp2.WSGIApplication([
    (r'/products/(\d+)', ProductHandler),
])

处理程序方法接收从URI中提取的product_id,并设置包含id作为响应的简单消息。

如您所见,\d+定义我们发送一个正整数。

参数是位置的。所以,如果你这样做:

...
(r'/products/(\d+)/(\d+)', ProductHandler)
...

你的方法必须接收这些参数(按照网址的顺序),如下所示:

...
def get(self, param1, param2):
    ...

如果您想了解更多信息,请阅读以下文档:

希望这会对你有所帮助。