假设我的应用程序就像一个论坛,但每个帖子都有一组可能会看到它的人。
SecretPost(Model):
can_see = myapp.main.models.GroupOfUsers()
我想写一个限制用户访问这些帖子的视图,而且我更喜欢使用装饰器,因为这就是我在其他地方处理访问控制的方式。
SecretPostView(DetailView):
"""Can only be seen by members of its group"""
@method_decorator(part_of_its_group)
def dispatch(self, request, *args, **kwargs):
return super(SecretPostView, self).dispatch(request, *args, **kwargs)
但是当dispatch()
被调用时,我对这个对象一无所知。在已经检索到对象后,是否有一种好的/惯用的方法来限制用户访问?