Пользовательское промежуточное ПО аутентификации для определенных маршрутов в Django

Я реализовал пользовательскую настройку аутентификации для своего проекта Django. Есть несколько пользовательских ролей для пользователей. Теперь я хочу убедиться, что некоторые специфические маршруты могут быть приемлемы только для определенных ролей пользователей. Скажем, edit/uploaded-files может быть допустимым только для пользователя с role = 1. Поэтому я создал промежуточное ПО для этого.

from django.shortcuts import redirect

class HRMiddleware(object):
    def process_request(self, request):
        user = request.user
        if not (user and user.is_authenticated() and user.email):
            return redirect('')
        if user.role_id.id != 1:
            raise 403
        return None

Теперь как я могу применить это промежуточное ПО только для некоторых определенных маршрутов? Я нашел несколько решений, например, использование декоратора @decorator_from_middleware(MyMiddleware) и указание маршрутов в middleware. Есть ли лучший способ сделать это? Вообще-то я разработчик Laravel. Это мой первый проект Django. В Laravel мы можем указывать промежуточные продукты в маршрутах. Пожалуйста, помогите мне

Попробуйте это:

URLS = ['/some_path/']

class HRMiddleware(object):
    def process_request(self, request):
        user = request.user
        if not (user and user.is_authenticated() and user.email) and request.path in URLS:
            return redirect('')
        if user.role_id.id != 1:
            raise 403
        return None
Вернуться на верх