如何只为 Django 中的某些路径定义中间件?

how to define middleware only for certain paths in django?

有没有为 Django 中的特定路由或路由组定义中间件? 像 laravel 我们可以这样定义它:

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

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

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

在您的中间件 class 中,然后您可以从 request.path 解析 view/route 并在匹配与否时分派自定义逻辑,或者您可以匹配 view_func.__name__或类似的东西,等等。取决于您的需要。

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