在这种情况下如何使用 HttpResponseForbidden?
How to use HttpResponseForbidden in this case?
这是我的代码的一部分:
def get_queryset(self):
if self.request.user.links.filter(pk=self.kwargs['pk']).exists():
return super(View, self).get_queryset()
else:
return HttpResponseForbidden()
我想检查用户是否访问了他或她的link,如果没有return HttpResponseForbidden。
我的代码在 raise PermissionDenied
下运行良好,但据我所知,这是不好的做法。
如何使我的视图与 HttpResponseForbidden
一起工作?
编辑:
如果我使用 HttpResponseForbidden() 我会捕获 'HttpResponseForbidden' object has no attribute 'filter'
您应该在调度方法中进行所有权限检查。
可能您已经覆盖它们以使用 login_required 进行装饰,因此在同一个地方继续进行权限检查也不会更糟。
@login_required
def dispatch(self, request, *args, **kwargs):
if not request.user.links.filter(pk=kwargs.get('pk', None)).exists():
return HttpResponseForbidden()
return super(View, self).dispatch(request, *args, **kwargs)
这是我的代码的一部分:
def get_queryset(self):
if self.request.user.links.filter(pk=self.kwargs['pk']).exists():
return super(View, self).get_queryset()
else:
return HttpResponseForbidden()
我想检查用户是否访问了他或她的link,如果没有return HttpResponseForbidden。
我的代码在 raise PermissionDenied
下运行良好,但据我所知,这是不好的做法。
如何使我的视图与 HttpResponseForbidden
一起工作?
编辑:
如果我使用 HttpResponseForbidden() 我会捕获 'HttpResponseForbidden' object has no attribute 'filter'
您应该在调度方法中进行所有权限检查。
可能您已经覆盖它们以使用 login_required 进行装饰,因此在同一个地方继续进行权限检查也不会更糟。
@login_required
def dispatch(self, request, *args, **kwargs):
if not request.user.links.filter(pk=kwargs.get('pk', None)).exists():
return HttpResponseForbidden()
return super(View, self).dispatch(request, *args, **kwargs)