如何在App Engine上使用Django接收百分比编码斜杠?

时间:2010-06-14 20:27:07

标签: python django google-app-engine

我正在使用Django和谷歌的App Engine。

我想用百分比编码的斜杠向服务器发送信息。像http:/localhost/turtle/waxy%2Fsmooth这样的请求会与r'^/turtle/(?P<type>([A-Za-z]|%2F)+)$'之类的网址匹配。请求完整地到达服务器,但在与正则表达式进行比较之前的某个时间,%2F将转换为正斜杠。

如何阻止%2F转换为正斜杠?谢谢!

1 个答案:

答案 0 :(得分:3)

os.environ['PATH_INFO']已解码,因此您丢失了该信息。可能os.environ['REQUEST_URI']可用,如果可用,则不会解码。 Django只读取PATH_INFO。你可能会做类似的事情:

request_uri = environ['REQUEST_URI']
request_uri = re.sub(r'%2f', '****', request_uri, re.I)
environ['PATH_INFO'] = urllib.unquote(request_uri)

然后,所有%2f的情况都被****(或您想要使用的任何内容)替换。