Django QueryDict可选的请求方法

时间:2016-11-20 15:47:13

标签: python django python-3.x http

我在Linux机器上使用django 1.10.2和python 3.5.2。

我的Django应用程序收到客户的请求。请求方法被标识为OPTIONAL类型。据我所知,Django会自动为POST和GET请求创建一个QueryDict。那么,如何获取非GET和POST Type的请求内容?如何创建此类请求的QueryDict或任何其他类型的请求?

出于调试目的,是否可以打印整个http请求?身体和标题?我想看看请求的内容。

提前致谢。

1 个答案:

答案 0 :(得分:0)

参数存储在request.body中 您可以使用此方法将它们转换为普通的python dict:

def retrieve_parameters_for_optional(request):
    parameters = {}
    params_as_string = request.body.decode("utf-8")
    for param in params_as_string.split("&"):
        if "=" in param:
            key, value = param.split("=", 1)
            parameters[key] = value
    return parameters

你可以创建QueryDict,因为它是不可变的, 但你可以复制例如request.GET和clear()的内容。

dict_of_parameters = retrieve_parameters_for_optional(request)
your_query_dict = request.GET.copy()
your_query_dict.clear()
for key, value in dict_of_parameters.items():
    your_query_dict[key] = value

之后,您可以将query_dict分配给request.GET并继续处理请求,就像正常的GET请求一样。