У меня есть два декоратора.
@csrf_exempt
@RateLimitMiddleware
def add_user(r):
if r.method == "POST":
if r.headers.get("Token") == Token:
data_dict = json.loads(r.body)
answer = VerificationCodes.send_code(data_dict.get('email'),
data_dict.get('username'), data_dict.get('password'))
return HttpResponse(json.dumps(answer[0]), status=answer[1])
else:
return HttpResponse("<h1>I don't know who you are!</h1>", status=401)
else:
return HttpResponse("<h1>You picked the wrong method, fool!</h1>", status=405)
В таком порядке второй декоратор вызывается дважды, не знаю ,почему. Если их поменять местами, то не срабатывает отключение проверки CSRF. Код мидлваря приложил ниже. Раньше работало нормально, а щас через пень колоду.
class RateLimitMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
ip_address = request.META.get('REMOTE_ADDR')
key = f'ratelimit_{ip_address}'
if cache.get(key):
return HttpResponse("Too many requests", status=429)
cache.set(key, 1, 2) # Задаем таймаут в секундах
response = self.get_response(request)
return response