2013-03-05 162 views
2

我有一個看起來像這樣的傳入請求,它來自第三部分,所以它不在我的手中。在Django中請求GET參數

/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

B.2.2&符號在URI的屬性值,其被構造時提交表單可以被用作一個 錨式鏈接(例如,href屬性爲

的URI 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 2013-03-06 00:03:53

+0

作爲分隔符的分號由[Django的QueryDict所依賴的[Python的urlparse模塊](http://docs.python.org/2/library/urlparse.html#urlparse.parse_qs)執行。 – OregonTrail 2013-03-06 05:18:47