如何只为 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
有没有为 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