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

unb*_*k3r 4 django django-middleware django-rest-framework

无论如何要为django中的特定路由或路由组定义中间件?就像 laravel 一样,我们可以这样定义它:

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

jhr*_*hrr 5

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

def process_view(self, request, view_func, view_args, view_kwargs):
     ...
Run Code Online (Sandbox Code Playgroud)

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

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