django中间件进程\请求和进程\视图之间的差异
我对django中间件进程\请求和进程\视图之间的差异,django,middleware,Django,Middleware,我对process\u request和process\u view有点困惑 流程请求是您希望在视图中随请求传递的内容。示例可以从request.user中获取 那么process\u view做什么?它是否用于在调用任何url之前最初执行任何视图?像最初一样,我想显示主视图,但这也可以从url完成 谁能给我举个例子说明什么时候使用过程视图 谢谢在Django确定哪个视图应该处理请求之前被调用(因此,它的唯一参数是请求) 在Django确定哪个视图将处理请求之后,但在调用该视图之前调用。它将访问
process\u request
和process\u view
有点困惑
流程请求是您希望在视图中随请求传递的内容。示例可以从request.user
中获取
那么process\u view
做什么?它是否用于在调用任何url之前最初执行任何视图?像最初一样,我想显示主视图,但这也可以从url完成
谁能给我举个例子说明什么时候使用过程视图
谢谢在Django确定哪个视图应该处理请求之前被调用(因此,它的唯一参数是请求
)
在Django确定哪个视图将处理请求之后,但在调用该视图之前调用。它将访问请求
对象,以及将处理它的视图和将传递给该视图的参数
当您需要知道将用于请求的视图时,可以使用process\u view
。这方面的一个很好的例子是,如果请求用于的视图中存在CSRF_豁免装饰器,则不会强制实施CSRF保护:
def process_view(self, request, callback, callback_args, callback_kwargs):
[...]
if getattr(callback, 'csrf_exempt', False):
return None
[...]
阿德里安·吉乌塔写了一个非常好的答案。我只想补充几点
process\u request
在进行url匹配之前被调用,而process\u view
在url匹配之后但在调用该视图之前被调用
我们可以使用process\u request
更改url本身,从而调用不同的视图。这一点帮助我理解了这些,所以我想回答一下,也许其他人也会回答