Python 如何在django中为每个不同的用户设置速率限制规则

Python 如何在django中为每个不同的用户设置速率限制规则,python,django,rate-limiting,Python,Django,Rate Limiting,我试图为每个不同的用户在试图访问视图时设置一个速率限制。这是我的密码: class Profil(models.Model): user=models.OneToOneField(User, on_delete=models.CASCADE) rate=models.IntegerField(default=0) models.py @login_required def flights(request): rate=str(Profil.objects.get(use

我试图为每个不同的用户在试图访问视图时设置一个速率限制。这是我的密码:

class Profil(models.Model):
    user=models.OneToOneField(User, on_delete=models.CASCADE)
    rate=models.IntegerField(default=0)
models.py

@login_required
def flights(request):
    rate=str(Profil.objects.get(user=request.user).rate)
    is_ratelimited(request, key='get:user', rate=rate+'/m')
    ....
但当我想要进入这个视图时,我会出现以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/Users/lucasbouvarel/Documents/testBCM/api/flights/views.py", line 32, in flights
    is_ratelimited(request, key='get:user', rate=rate+'/m')
  File "/usr/local/lib/python3.7/site-packages/ratelimit/utils.py", line 109, in is_ratelimited
    parts = (fn.__module__, fn.__name__)
AttributeError: 'NoneType' object has no attribute '__module__'
我做错了什么?
你有更好的主意来做我想做的事吗?

我尝试了不同的方法,但仍然不起作用

@method_decorator(login_required, name='dispatch')
class MyView(RatelimitMixin, View):
    ratelimit_key='user'
    ratelimit_rate='10/m'
    ratelimit_block=True
    ratelimit_method='GET'
    def get(self, request, *args, **kwargs):
        rate=str(Profil.objects.get(user=self.request.user).rate)
        rate=str(Profil.objects.get(user=self.request.user).rate)
        print(is_ratelimited(request, key='get:Profil.user', rate=str(rate)+'/m',group=str(request.user)))
我没有任何错误,我得到了一个httpResponse,但是如果帐户用户速率限制是5,例如,他将能够执行10(如MyView类中所写)。 你有没有想法为每个不同的用户设定一个特定的速率限制。
非常感谢你

我尝试了不同的方法,但仍然不起作用

@method_decorator(login_required, name='dispatch')
class MyView(RatelimitMixin, View):
    ratelimit_key='user'
    ratelimit_rate='10/m'
    ratelimit_block=True
    ratelimit_method='GET'
    def get(self, request, *args, **kwargs):
        rate=str(Profil.objects.get(user=self.request.user).rate)
        rate=str(Profil.objects.get(user=self.request.user).rate)
        print(is_ratelimited(request, key='get:Profil.user', rate=str(rate)+'/m',group=str(request.user)))
我没有任何错误,我得到了一个httpResponse,但是如果帐户用户速率限制是5,例如,他将能够执行10(如MyView类中所写)。 你有没有想法为每个不同的用户设定一个特定的速率限制。
非常感谢

请发布完整的回溯?是的,很抱歉,我已经为is_Rate Limited Expected完成了这项工作fn kwargs,目前还没有。检查文档好的,我需要指定一个组,我已经指定了,但是我仍然无法为每个用户设置速率限制,它不起作用。请发布完整的回溯?是的,对不起,我已经为is_ratelimited Expected做了itfn kwargs,目前没有。检查文档好的,我需要指定一个组,我已经完成了,但是我仍然不能为每个用户设置一个速率限制,它不起作用,请将相关信息添加到其中。这不是您问题的答案,请在其中添加相关信息。这不是你问题的答案