webapp处理程序中的编码百分比不一致

时间:2012-05-03 13:32:42

标签: python google-app-engine python-2.5

我正在尝试使用Google App Engine处理映射。

正则表达式是这样的:

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

当网址看起来像/api/1/apps/50b96eb0/values/New%20note%2Fhello时,传递给我的处理程序的值为New%20note/hello。正如你所看到的那样,它不会削弱斜线,而不是空间。

我在某处缺少某个设置,还是我需要自己做一些事情?如果有一些值,那么它们永远不会出现在某个地方的列表吗?

更新

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

main.py

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)

的app.yaml

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

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

2 个答案:

答案 0 :(得分:1)

使用urllib.unquote来取消字符串。

Example

答案 1 :(得分:0)

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

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

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

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

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