django处理HTTP请求流程

django处理HTTP请求流程_第1张图片
django处理HTTP请求流程图
django处理HTTP请求流程_第2张图片
中文版

middleware<--全靠它!

Initializer: init(self)

出于性能的考虑,每个已启用的中间件在每个服务器进程中只初始化一次(服务进程启动的时候调用)。

对自身的检查

过。

process_request(self, request)

request预处理函数

Django接收到request之后,但仍未解析URL以确定应当运行的view之前。调用

返回 None(Django将继续处理这个request,执行后续的中间件, 然后调用相应的view,“我对继续处理这个request没意见”)

或者返回 HttpResponse 对象(Django 将不再执行任何其它的中间件(无视其种类)以及相应的view。 Django将立即返回该 HttpResponse,“我不想其他代码处理这个request,我要提早返回” ).

process_view(self, request, callback, callback_args, callback_kwargs)

view预处理函数

Django执行完request预处理函数并确定待执行的view之后,但在view函数实际执行之前

process_response(self, request, response)

Response后处理函数

在****Django****执行view****函数****并生成****response****之后

该处理器能修改response****的内容

django-HttpRequest

HttpRequest.POST

A dictionary-like object containing all given HTTP POST parameters, providing that the request contains form data. See the QueryDict
documentation below. If you need to access raw or non-form data posted in the request, access this through the HttpRequest.body
attribute instead.
It’s possible that a request can come in via POST with an empty POST dictionary – if, say, a form is requested via the POST HTTP method but does not include form data. Therefore, you shouldn’t use ifrequest.POST to check for use of the POST method; instead, use if request.method == "POST" (see above).
Note: POST does not include file-upload information. See FILES
.

类似字典的object,返回所有http post请求的参数,formed data,如果想看原始数据,HttpRequest.body

可能为空,需要检测

你可能感兴趣的:(django处理HTTP请求流程)