如何仅为django中的某些路径定义中间件?

时间:2018-04-02 15:18:30

标签: django django-rest-framework django-middleware

无论如何都要为django中的特定路线或路线组定义中间件? 像laravel我们可以定义如下:

Route::get('admin/profile', function () {})->middleware('auth');

1 个答案:

答案 0 :(得分:3)

从历史上看,有一些钩子可以用来做这样的事情。但是现在你可以肯定覆盖:

def process_view(self, request, view_func, view_args, view_kwargs):
     ...

在您的中间件类中然后您可以从request.path解析视图/路由并调度自定义逻辑(如果匹配与否),或者您可以匹配view_func.__name__或类似的东西等。取决于您的需求。

https://docs.djangoproject.com/en/2.0/topics/http/middleware/#process-view