Django request.REQUEST.get()是否包含BOTH GET和POST参数?

时间:2013-11-14 17:22:08

标签: python django post get

请求中是否有参数.POST和request.GET同时在请求中。或者我必须检查每一个?

我在REQUEST / QueryDict的文档中找不到明确的信息。 NB:Django 1.4 Final

4 个答案:

答案 0 :(得分:9)

不,这在旧版本中是可能的,但在Django 1.7中被折旧。对于运行古代版本的Django考古学家,请继续阅读。

来自documentation

HttpRequest.REQUEST

为方便起见,首先搜索POST的字典对象,然后GET。灵感来自PHP的$ _REQUEST。

例如,如果GET = {“name”:“john”}和POST = {“age”:'34'},则REQUEST [“name”]将为“john”,并且REQUEST [“age”]将是“34”。

强烈建议您使用GET和POST而不是REQUEST,因为前者更明确。

答案 1 :(得分:1)

是的,医生说:

  

HttpRequest.REQUEST为方便起见,这是一个类似字典的对象   先搜索POST,然后再搜索。灵感来自PHP的$ _REQUEST。

     

例如,如果GET = {“name”:“john”}和POST = {“age”:'34'},   REQUEST [“name”]为“john”,REQUEST [“age”]为“34”。

     

强烈建议您使用GET和POST而不是REQUEST,   因为前者更明确。

答案 2 :(得分:1)

试试这个:

name = request.GET.get('name',request.POST.get('name'))

答案 3 :(得分:1)

如果您不确定需要使用哪个,可以方便地替换为:

def get_post_or_get(request):
    """
    Return the equivalent of request.REQUEST 
    which has been removed in Django 1.9
    """
    return request.POST or request.GET

参考: https://github.com/edx/django-openid-auth/pull/5/commits/aa5eef791cd487eb359db25011572d5966a2c92a