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本身,从而调用不同的视图。这一点帮助我理解了这些,所以我想回答一下,也许其他人也会回答