在Django中请求GET参数

在Django中请求GET参数

问题描述:

我有一个看起来像这样的传入请求,它来自第三部分,所以它不在我的手中。在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自己,但我被请求对象的默认行为感到惊讶。认为它只用“&”来划分参数。任何人看到这个或知道这是否应该发生?

根据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