在Django中请求GET参数

时间:2013-03-05 23:58:05

标签: django http url request

我有一个看起来像这样的传入请求,它来自第三部分所以它不在我的手中。

/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,但我对请求对象的默认行为感到惊讶。认为它只将参数除以“&”。其他人看到这个或知道这是否应该发生?

1 个答案:

答案 0 :(得分:1)

根据W3,“;”实际上是URI的首选参数分隔符。

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

  

B.2.2 URI属性值中的&符号

     

提交表单时构造的URI可以用作   锚式链接(例如,A元素的href属性)。   不幸的是,使用“&amp;”用于分隔表单字段的字符   与其在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   实现者支持使用“;”取代“&amp;”保存作者   逃避“&amp;”的麻烦这种方式的人物。