5

request.POST 和 request.GET 中的参数是否都在 request.REQUEST 中?或者我必须检查他们每个人?

我在 REQUEST/QueryDict 的文档中找不到明确的信息。注意:Django 1.4 决赛

4

4 回答 4

10

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

文档中:

HttpRequest.REQUEST

为方便起见,类似字典的对象先搜索 POST,然后再搜索 GET。受 PHP 的 $_REQUEST 启发。

例如,如果 GET = {"name": "john"} 和 POST = {"age": '34'},REQUEST["name"] 将是 "john",REQUEST["age"] 将是 " 34"。

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

于 2013-11-14T17:28:16.207 回答
2

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

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

于 2017-07-21T09:37:54.640 回答
1

是的,医生说:

HttpRequest.REQUEST 为方便起见,类似字典的对象先搜索 POST,然后搜索 GET。受 PHP 的 $_REQUEST 启发。

例如,如果 GET = {"name": "john"} 和 POST = {"age": '34'},REQUEST["name"] 将是 "john",REQUEST["age"] 将是 " 34"。

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

于 2013-11-14T17:28:29.383 回答
1

尝试这个:

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

于 2017-01-09T12:00:48.450 回答