我正在尝试构建一个能够查看以前编辑的wiki。每个wiki条目都有自己的相对URL路径,修订号在URL上附加'/ rev ='。
这是我的代码的一部分。
class WikiPage(MainHandler):
def get(self, url, num):
num = int(num) if num else 0
... # Display the wiki-entry with that revision number
PAGE = r'(/(?:[a-zA-Z0-9_-]+/?)*)'
app = webapp2.WSGIApplication([
(r'/wiki' + PAGE + r'(?:/rev=(\d+))?', WikiPage),
... # Other Handlers
], debug = True)
这可能不是最好的方法(例如。我可以使用查询来获取修订号,但我想知道如何以这种方式进行)
当我运行上面的代码时,我得到一个错误,指示get函数接受3个参数但仅提供2. url参数正确传递但未传递修订号。我也尝试将原始字符串中的组命名为num,但它仍然不起作用。
如果我能将2个或更多参数传递给我的处理程序,我将不胜感激。
编辑:根据JamieGómez的回答,我尝试修改我的程序,但我仍然无法使其工作(我收到404错误)。我也尝试使用未命名的参数,但无济于事。我没有正确实施吗?
class WikiPage(MainHandler):
def get(self, **kw):
url = kw.get('url')
num = kw.get('num')
num = int(num) if num else 0
... # Display the wiki-entry with that revision number
PAGE = r'<url:/(?:[a-zA-Z0-9_-]+/?)*>'
app = webapp2.WSGIApplication([
(r'/wiki' + PAGE + r'(?:/rev=<num:\d+>)?', WikiPage),
... # Other Handlers
], debug = True)
答案 0 :(得分:2)
答案 1 :(得分:0)
您可以使用webapp2.Route()。这里有一个例子(我仍在努力完全理解它,所以):https://github.com/svpino/blog-engine
答案 2 :(得分:0)
为什么不将rev作为请求参数传递,如
/wiki?month=4&year=2015&rev=123
通过这种方式,您可以通过这种方式在处理程序中获取它
self.request.get('rev')