1

以下是我当前如何检查模型是否属于正在编辑它的用户。我views.py几乎对所有东西都这样做,它有点重复,我经常使用它!

 # If we have an instance check that it belongs to the login.
        if some_object.user != request.user:
            return HttpResponseForbidden()

所以,我想知道其他人如何解决这样的功能?我一直在考虑将其移至所有对象的每个保存方法?

我可以提供 Django 开发人员如何执行此操作的示例(带有代码)吗,必须有更好的方法来检查哪些用户可以编辑哪些内容,对吗?

我不会急于接受答案,我对来自更有经验的开发人员的权威回复非常感兴趣,因为我对 Django 还很陌生。

谢谢你。

4

1 回答 1

2

如果您使用基于类的视图,Mixins 可以工作......您可以通过执行类似这样的操作来创建自己的视图

class RequireOwnershipMixin(object):
    def get_object(self, queryset=None):
        obj = super(RequireOwnershipMixin, self).get_object(queryset)
        if obj.user != self.request.user:
            return None
        return obj

你的视图现在看起来像这样

class UpdateSomeObjectView(RequireOwnershipMixin, UpdateView):
    ...

如果您不是对象的所有者,这将覆盖get_object要返回的方法。None您可能需要在getorpost方法中做一些额外的检查来处理何时None返回,以便您可以返回一个HttpResponseForbidden

您也可以将它用于任何使用该get_object方法的基于类的视图。

于 2013-04-01T13:40:22.207 回答