【发布时间】:2013-06-16 11:52:31
【问题描述】:
我研究了如何使用 webapp2 在 RedirectRoute 中使用正则表达式。我已经尝试按照这里所说的方式对其进行格式化:http://webapp-improved.appspot.com/guide/routing.html#the-url-template,但我仍然无法让我的正则表达式工作。这是我所拥有的:
RedirectRoute('/book/<bookId:([0-9]+)><title:(.*)>',handlers.book,name='book')
对此的呼吁是:
self.redirect_to('book/%s_%s' %(bookId,title))
我期望的网址示例是:
book/5907332378656768_The-Wizzard-of-Oz
当我运行我的应用程序时,我收到以下错误:
错误:“名为 u'book/5907332378656768_The-Wizzard-of-Oz' 的路线未定义。
任何帮助将不胜感激。
EDIT:
大家好!感谢布伦特的回应,我能够解决这个问题。
我不得不改变self.redirect_to('book/%s_%s' %(bookId,title))
到以下:self.redirect('book/%s_%s' %(bookId,title))
感谢大家的帮助!
【问题讨论】:
-
.*将匹配任何重复零次或多次的单个字符(例如aaaa)。.表示任何单个字符。*表示重复前一项零次或多次。我怀疑这是您必须修改的部分,以创建与标题匹配的表达式。 -
@Brian - 呃,不完全正确。
.*也匹配abcd。也许这就是您的意思,但是您的示例具有误导性。.最好被认为是一个包含除换行符之外的所有字符的字符类。 -
我不好,这不是问题所在。请原谅仓促的评论:(也许是关于逃避正斜杠的事情?
\/ -
感谢您的帖子。我尝试将第二个 / 移动到正则表达式中并转义它,但这也不起作用。第一个是正确的方式。感谢您的尝试!我将代码剥离为正则表达式并使用了 python 正则表达式检查器,它正确捕获了所有内容,所以我不知道发生了什么。
标签: regex google-app-engine python-2.7 webapp2