-1

我正在尝试让处理程序映射与 Google App Engine 一起使用。

正则表达式是这样的:

('/api/1/apps/([-0-9a-zA-Z]+)/values/(.+)', ApiValueHandler)

当 URL 看起来像/api/1/apps/50b96eb0/values/New%20note%2Fhello传递给我的处理程序的值是New%20note/hello. 如您所见,它没有转义斜线,但没有转义空格。

是否有我在某处缺少的设置,或者我需要做一些逃避自己的事情?如果有一些价值观,它永远不会逃避,在某个地方有这些清单吗?

更新:

这是一个测试应用程序,它在使用 Python 2.5 在 Windows 7 上的开发服务器上运行时显示此行为。

主文件

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util

class MainHandler(webapp.RequestHandler):
    def get(self, blah):
        self.response.out.write(blah)

app = webapp.WSGIApplication([('/(.*)', MainHandler)], debug=True)
util.run_wsgi_app(app)

应用程序.yaml

application: engineapp
version: 1
runtime: python
api_version: 1

handlers:
- url: .*
  script: main.py
4

2 回答 2

1

用于urllib.unquote对字符串进行转义。

例子

于 2012-05-03T13:37:33.107 回答
0

未转义字符由quote:字母、数字_.-和默认安全字符定义/

http://docs.python.org/library/urllib.html#urllib.quote

只需unquote在匹配的字符串上使用。

>>> urllib.unquote('/%24/')
'/$/'

http://docs.python.org/library/urllib.html#urllib.unquote

于 2012-05-03T18:44:34.560 回答