我刚开始使用Google App Engine和webapp2 famework。通常,我们开始使用以下代码构建应用程序
class MainPage(webapp2.RequestHandler):
def get(self):
#do something
app = webapp2.WSGIApplication([('/blog',MainPage)])
现在有时我们注册这样的处理程序
app = webapp2.WSGIApplication([('/blog/(\d+)',MainPage)]
当我们请求相应的网址时,get()
方法必须定义为
def get(self,post_id):
此post_id
是我们请求的网址末尾的ID。
现在我不明白get()
方法在这种情况下何时接受post_id
之类的其他参数?我的意思是,所有正则表达式(\d+)
都表示如果URL以数字结尾,则将其映射到MainPage
处理程序。那么webapp2
何时知道何时将参数/参数发送到get()
处理程序的MainPage
函数?
答案 0 :(得分:2)
模式与URL匹配作为正则表达式,模式中的括号构成“捕获组”,这意味着匹配该模式部分的URL部分是“捕获”的。就目前而言,捕获组是匿名的,传递给处理程序的参数是以位置方式完成的(您不必将其称为post_id
)。将模式更改为(?P<post_id>\d+)
使其成为“命名”组,处理程序的参数将是关键字-arg(参数的名称很重要)。
为了完整性,如果您希望正则表达式中的组不捕获(因此不作为参数传递),请将其指示为(?:\d+)