-1

ハンドラマッピングをGoogleAppEngineで動作させようとしています。

正規表現は次のようになります。

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

/api/1/apps/50b96eb0/values/New%20note%2FhelloURLが私のハンドラーに渡される値のように見えるときはですNew%20note/hello。ご覧のとおり、スラッシュはエスケープされていませんが、スペースはエスケープされていません。

どこかに欠けている設定はありますか、それとも自分で逃げる必要がありますか?いくつかの値がある場合、それは決してエスケープされませんこれらのリストはどこかにありますか?

更新しました:

これは、Python2.5を搭載したWindows7の開発サーバーで実行した場合のこの動作を示すテストアプリです。

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
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 に答える