Пользовательский декоратор для передачи пользовательских данных в функцию в 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):