Django 如何从throttle类访问请求url pk?
我是Django的新手,我正在构建一个使用RESTAPI的Django应用程序。我有一个限制类,我想限制用户在一分钟内向同一用户发送超过5个邀请。我发送一个带有URL的用户ID 我应该访问pk以将其用于缓存操作。如何从throttle类访问pk 例如:api/users/3299143165471965406/重新发送邀请电子邮件/ 主键将为:3299143165471965406 视图.pyDjango 如何从throttle类访问请求url pk?,django,django-rest-framework,Django,Django Rest Framework,我是Django的新手,我正在构建一个使用RESTAPI的Django应用程序。我有一个限制类,我想限制用户在一分钟内向同一用户发送超过5个邀请。我发送一个带有URL的用户ID 我应该访问pk以将其用于缓存操作。如何从throttle类访问pk 例如:api/users/3299143165471965406/重新发送邀请电子邮件/ 主键将为:3299143165471965406 视图.py @decorators.action(methods=['post'], detail=Tru
@decorators.action(methods=['post'], detail=True, serializer_class=None,
permission_classes=[core_permissions.IsCompanyAdmin],
url_path='resend-invitation-email', throttle_classes=[throttles.ResendInvitationThrottle])
def resend_invitation_email(self, request, pk=None):
user = get_object_or_404(User, pk=pk)
if user.invitation_status == User.INVITATION_STATUS_ACCEPTED or user.invitation_status is None:
raise ValidationError("This user is already registered.")
else:
invitations_tasks.send_invitation_email.delay(pk)
return response.Response(status=200)
油门:
class ResendInvitationThrottle(SimpleRateThrottle):
scope = 'invitation'
def get_cache_key(self, request, view):
invited_user_id = 1 # Here I should use PK
return self.cache_format % {
'scope': self.scope,
'ident': invited_user_id
}
编辑:
class ResendInvitationThrottle(SimpleRateThrottle):
scope = 'invitation'
def get_cache_key(self, request, view):
invited_user_id = 1 # Here I should use PK
return self.cache_format % {
'scope': self.scope,
'ident': invited_user_id
}
我通过使用:invested\u user\u id=view.kwargs['pk']
谢谢你的回复
self.request.kwargs['pk']
引发异常:“request”对象没有属性“kwargs”。很抱歉,self.request.kwargs
完全错误,我写这篇文章时已经是深夜了。很高兴看到你明白了。您可以添加自己的答案,然后如果愿意,将其标记为已接受。谢谢您的回复self.request.kwargs['pk']
引发异常:“request”对象没有属性“kwargs”。很抱歉,self.request.kwargs
完全错误,我写这篇文章时已经是深夜了。很高兴看到你明白了。您可以添加自己的答案,然后如果愿意,将其标记为已接受。