我对process_request
和process_view
有点困惑。
进程请求是您希望通过请求传递视图的内容。例子可以从request.user
获得。
然后process_view
做什么?是否在调用任何URL之前最初执行任何视图?像最初我想显示主页视图,但这也可以通过网址完成。
任何人都可以举例说明何时使用process_view
?
谢谢
在Django确定哪个视图应该处理请求之前调用process_request
(因此,它的唯一参数是request
)。
在Django确定哪个视图将处理请求之后但在调用该视图之前调用process_view
。它将有权访问request
对象,以及将处理它的视图以及将传递给该视图的参数。
每当您需要知道将用于请求的视图时,您都可以使用process_view
。一个很好的例子是Django's CSRF Middleware process_view
,如果请求所针对的视图中存在csrf_exempt装饰器,它将不会强制实施CSRF保护:
def process_view(self, request, callback, callback_args, callback_kwargs):
[...]
if getattr(callback, 'csrf_exempt', False):
return None
[...]
Adrian Ghiuta写了一个非常好的答案。我只是想补充一点。
在进行url匹配之前调用process_request
,在url匹配之后但在调用该视图之前调用process_view
。
我们可以使用process_request
来更改url本身,从而调用不同的视图。这一点帮助我理解了这些,所以我想回答它,也许它也是其他人。