python - 如何在 django 中为每个不同的用户设置速率限制规则
问题描述
当他们尝试访问视图时,我试图为每个不同的用户设置速率限制。这是我的代码:
class Profil(models.Model):
user=models.OneToOneField(User, on_delete=models.CASCADE)
rate=models.IntegerField(default=0)
模型.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 类中所写)。您是否有想法为每个不同的用户设置指定的速率限制。太感谢了
推荐阅读
- json - 如何将 fetch API 响应转换为 TypeScript 中的特定类型?
- mysql - 如何使用 WHERE IN() 编写查询,其中字符串包含数组中的任何数据?
- css - 如何在 Angular 7 中添加对生成样式的引用。[hash].css 文件
- c++ - 当指针作为指向另一个函数内的指针的指针传递时会发生什么?
- python - 如何从 odict_iterator 中获取 OrderedDict 值?
- validation - 正则化与验证
- jquery - Using .length on a selector while iterating with .each through a JSON file
- reactjs - 在 reactjs 中实现开放图社交分享
- github - Github Api v3 different callback responses
- python - Numpy:根据索引数组组合几个数组