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
可能为空,需要检测