我在Linux机器上使用django 1.10.2和python 3.5.2。
我的Django应用程序收到客户的请求。请求方法被标识为OPTIONAL类型。据我所知,Django会自动为POST和GET请求创建一个QueryDict。那么,如何获取非GET和POST Type的请求内容?如何创建此类请求的QueryDict或任何其他类型的请求?
出于调试目的,是否可以打印整个http请求?身体和标题?我想看看请求的内容。
提前致谢。
答案 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请求一样。