假设我的应用就像一个论坛,但每个帖子都有一组人可能会看到它。Django:基于对象的属性使用基于类的视图进行身份验证
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()
被调用时,我不知道任何关于该对象。在对象已被检索后,是否有一种很好的/惯用的方法来限制用户访问?
嗯......当我在'dispatch'方法中调用'get_object'时,出现一个错误,对象没有'kwargs'属性。 – 2013-03-03 04:04:54
前段时间我做了一个编辑,解释了为什么。我没有意识到这一点,但是我自己测试了一下,发现调度方法是将'request','args'和'kwargs'属性赋予通用视图的方法。 – asermax 2013-03-03 04:34:49