2010-06-14 34 views
10

Google'ın App Engine ile Django kullanıyorum.App Engine'de Django ile yüzde kodlanmış eğik çizgileri nasıl alabilirim?

Ben yüzde kodlanmış slashesle sunucuya bilgi göndermek istiyorum. r'^/turtle/(?P<type>([A-Za-z]|%2F)+)$' gibi bir URL'ye karşı eşleşir http:/localhost/turtle/waxy%2Fsmooth gibi bir istek. Bu istek, sunucuya bozulmadan ulaşır, ancak bir süre önce% 2F ifadesi, bir eğik çizgiye dönüştürülür.

Ben eğik dönüştürülmüş olmaktan% 2FS durdurmak için ne yapabilirim? Teşekkürler!

+2

Neden sadece olmayan kodlanmış sürümünü kullanmak için regexp'i değiştiremiyorum? –

+3

Biz bir sığınakta tasarım kullanarak ve 'r '^/kaplumbağa/(P ([A-Za-z]? |% 2F) +)/kabuk $' gibi bakmak başka Regexes gerekecek'. URL hiyerarşisinin bir parçası olan eğik çizgileri ve bir kaplumbağa isminin parçası olan eğik çizgileri ayırt etmek istiyoruz. –

+1

Bunu aday Python web çerçevelerini değerlendirirken kullandığım gereksinimler listeme ekleyeceğim. –

cevap

3

os.environ['PATH_INFO'] deşifre, bu nedenle bu bilgileri kaybetmek. Muhtemelen os.environ['REQUEST_URI'] mevcuttur ve mevcutsa kodu çözülmez. Django sadece PATH_INFO'yu okur. Ardından% 2f tüm durumlar (Kullanmak istediğiniz her türlü ya) **** ile değiştirilir

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

: Muhtemelen gibi bir şey yapabilirdi.

+0

REQUEST_URI hangi ayarları? Bunu 333'ün gerekli olan wsgi değişken listesinde göremiyorum. –

+0

PEP 333'te gerekli değildir, ancak CGI (veya CGI benzeri) isteklerin bir parçası olarak geniş çapta ayarlanır. Varsa, GAE'de mevcut olarak kalması kesin. Hiçbir URL unencoding yapılmadan, tam istek yoludur. –

+2

'os.environ ['REQUEST_URI']', GAE'de mevcut değildir. –

İlgili konular