Py学习  »  Django

设置每月使用限制-Django API

moka • 3 年前 • 1118 次点击  

我正在浏览Django rest框架文档和其他问题,试图找出是否有一种方法可以按用户组定制每月费率限制。

逻辑: 用户A-组1 用户B-第2组

第1组-每月允许给endpoint打10个电话 第二组-每月允许打100个电话

非常感谢您的帮助,我是Django的新手,对DRF很着迷

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132847
 
1118 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Eugenij
Reply   •   1 楼
Eugenij    3 年前

如果您的限制很低,您可以将每个请求记录在单独的模型中,并手动检查限制。

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")