我对process_request
和process_view
感到有些困惑。
进程请求是您希望通过请求传递视图的内容。示例可以从request.user
获取。
然后process_view
做了什么?最初是为了执行任何视图而不是调用任何URL吗?像最初我想显示主页视图,但这也可以通过网址完成。
有人可以举例说明何时使用process_view
?
谢谢
答案 0 :(得分:16)
process_request
(因此,它唯一的参数是request
)。
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
[...]
答案 1 :(得分:2)
process_request
,并在网址匹配之后但在调用该视图之前调用process_view
。
我们可以使用process_request
更改网址本身,从而调用不同的视图。这一点帮助我理解了这些,所以我想回答它,也许它也是其他人。