Python GAE 中的正则表达式
Python regex in GAE
我正在尝试更新我的 webapp2 路由器,以便在特定情况下将我带到不同的处理程序,这是我所拥有的:
地址:“*.com/blog/post?action=edit&id=fl2j3r0udflj3”
为了简单起见,我只想匹配 /blog/post?action=edit
我有这个:
app = webapp2.WSGIApplication([
('/',Redirect),
(r'/blog/post?(\S+)', blog.EditPost),
('/blog/post', NewPost),
....
无效。
我尝试了几种不同的方法,例如
- ('r/blog/post\?action=edit', blog.EditPost)
- ('r/blog/post\?action=edit(.*+)', blog.EditPost)
没有任何效果。有什么想法吗?
tl;dr:如果您想维护 URL 结构,您的“/blog/post”处理程序将需要根据存在参数及其值进一步分派。
这是其中一种情况,如果在谈论 URL 时事先了解 'path' 的含义会有所帮助。具体来说,该参数不是路径的一部分。
它也可以通过深入研究 SDK 源码来解决,目的是回答问题 "which part of the URL is being considered when matching routes?"
webapp2
提供了 webob
之上的功能。 webapp2.WSGIApplication
为传递给 WSGIApplication
构造函数的路由构建一个 webapp2.SimpleRoute
列表。 SimpleRoute
"matches" 基于 request.path
,它是 webob.Request
(webapp2.Request
子类)提供的请求的 属性。 path
属性 以
开头
@property
def path(self):
"""The path of the request, without host or query string"""
意思是,最终查询字符串无法通过路由匹配。 (您可以进一步挖掘代码以确认这一点。)
我正在尝试更新我的 webapp2 路由器,以便在特定情况下将我带到不同的处理程序,这是我所拥有的:
地址:“*.com/blog/post?action=edit&id=fl2j3r0udflj3”
为了简单起见,我只想匹配 /blog/post?action=edit
我有这个:
app = webapp2.WSGIApplication([
('/',Redirect),
(r'/blog/post?(\S+)', blog.EditPost),
('/blog/post', NewPost),
....
无效。
我尝试了几种不同的方法,例如
- ('r/blog/post\?action=edit', blog.EditPost)
- ('r/blog/post\?action=edit(.*+)', blog.EditPost)
没有任何效果。有什么想法吗?
tl;dr:如果您想维护 URL 结构,您的“/blog/post”处理程序将需要根据存在参数及其值进一步分派。
这是其中一种情况,如果在谈论 URL 时事先了解 'path' 的含义会有所帮助。具体来说,该参数不是路径的一部分。
它也可以通过深入研究 SDK 源码来解决,目的是回答问题 "which part of the URL is being considered when matching routes?"
webapp2
提供了 webob
之上的功能。 webapp2.WSGIApplication
为传递给 WSGIApplication
构造函数的路由构建一个 webapp2.SimpleRoute
列表。 SimpleRoute
"matches" 基于 request.path
,它是 webob.Request
(webapp2.Request
子类)提供的请求的 属性。 path
属性 以
@property
def path(self):
"""The path of the request, without host or query string"""
意思是,最终查询字符串无法通过路由匹配。 (您可以进一步挖掘代码以确认这一点。)