request.POST 和 request.GET 中的参数是否都在 request.REQUEST 中?或者我必须检查他们每个人?
我在 REQUEST/QueryDict 的文档中找不到明确的信息。注意:Django 1.4 决赛
不,这在旧版本中是可能的,但在 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,因为前者更明确。
如果您不确定需要使用哪个,如果可以方便地替换为:
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
是的,医生说:
HttpRequest.REQUEST 为方便起见,类似字典的对象先搜索 POST,然后搜索 GET。受 PHP 的 $_REQUEST 启发。
例如,如果 GET = {"name": "john"} 和 POST = {"age": '34'},REQUEST["name"] 将是 "john",REQUEST["age"] 将是 " 34"。
强烈建议您使用 GET 和 POST 而不是 REQUEST,因为前者更明确。
尝试这个:
name = request.GET.get('name', request.POST.get('name'))