2013-03-05 2 views
2

У меня есть входящий запрос, который выглядит следующим образом: его из третьей части, так что это из моих рук.Запросить параметры GET в Django

/external/endpoint?PRN=1234567&INPUT=1111;ABCDEF&CUSTOMER=555454545

При печати параметры запроса в request.GET это то, что я получаю. Параметр INPUT отрубается на два разных.

Incoming dict: {u'INPUT': [u'1111'], u'ABCDEF': [u''],u'CUSTOMER': [u'555454545'], u'PRN': [u'1234567']} 

Я мог сам взломать URL-адрес запроса, но я был удивлен поведением объекта запроса по умолчанию. Думал, что он разделил параметры только на «&». Кто-нибудь еще видел это или знал, должно ли это случиться?

ответ

0

Согласно W3, ";" на самом деле является предпочтительным разделителем параметров для URI.

http://www.w3.org/TR/html4/appendix/notes.html#h-B.2.2

В.2.2 Амперсанды в URI значения атрибутов

URI, который выполнен, когда форма была отправлена, может быть использован в качестве ссылки якорного типа (например, HREF атрибута для элемент A). К сожалению, использование символа «&» для разделения полей формы взаимодействует с его использованием в значениях атрибута SGML, чтобы разграничить символ ссылки на сущности. Например, чтобы использовать URI http://host/?x=1&y=2 в качестве связующего URI, его необходимо записать <A href="http://host/?x=1&#38;y=2"> или <A href="http://host/?x=1&amp;y=2">.

Мы рекомендуем, чтобы разработчики HTTP-сервера и, в частности, разработчики CGI поддерживали использование «;» вместо «&», чтобы сохранить авторов проблемы с экранированием «&» символов таким образом.

+0

Большое спасибо, что на нем отвечает! Плохо выбор разделителей у поставщика. – Gesias

+0

Точка с запятой в качестве разделителя обеспечивается [модулем urlparse Python] (http://docs.python.org/2/library/urlparse.html#urlparse.parse_qs), на который полагается QueryDict Django. – OregonTrail