Установка месячного лимита использования - API Django

Я просматриваю документацию по фреймворку Django rest и другие вопросы здесь, пытаясь понять, есть ли способ настроить его для ограничения месячного тарифа по группам пользователей.

логика: Пользователь A - группа 1 Пользователь B - группа 2

Группа 1 - разрешено 10 звонков в месяц на конечную точку Группа 2 - разрешено 100 звонков в месяц

Любая помощь будет очень признательна, я новичок в Django и очарован DRF

Если у вас так мало лимитов, вы можете регистрировать каждый запрос в отдельной модели и проверять лимиты вручную.

class RareEndpointRequest(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    endpoint = models.TextField("Endpoint's URL")
    created_at = models.DateTimeField(auto_now_add=True)


def some_endpoint(request, *args, **kwargs):
    user = request.user

    request_count = RareEndpointRequest.objects.filter(
        user=user,
        endpoint='some_endpoint',
        created_at__year=timezone.now().year,
        created_at__month=timezone.now().month,
    ).count()

    if request_count > request_limit_by_group(user.group):
        return HttpResponse("Rate limit", status=429)

    # do your actions

    RareEndpointRequest.objects.create(user=user, endpoint='some_endpoint')

    return HttpResponse("Some data")

Вернуться на верх