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

Я хочу создать пользовательский декоратор, который проверяет текущего пользователя и выполняет запрос для этого пользователя, чтобы получить некоторые данные, которые принадлежат ему, а затем, если есть определенные данные, вызывается функция со всем переданным списком, иначе возвращается 403 ошибка. Как я могу это сделать?

Вы можете написать декоратор следующим образом:

# check_data is what the user must have access to
def custom_decorator(check_data):
    def decorator(func):
        def wrapper(request, *args, **kwargs):
            user = request.request.user
            # data_list is list of his access
            data_list = []
            if user.is_authenticated:
                pass
                # you can do your query here to check access
            
            if check_data in data_list:
                kwargs['access_list'] = data_list
                return func(request, *args, **kwargs)
            
            # return Http Error here

        return wrapper

    return decorator

Добавьте параметр access_list к вашей функции представления:

@custom_decorator("something")
def get(self, request, access_list=None):
Вернуться на верх