Django 如何检查实例是否属于登录用户?
下面是我当前如何检查模型是否属于正在编辑它的用户。我在Django 如何检查实例是否属于登录用户?,django,Django,下面是我当前如何检查模型是否属于正在编辑它的用户。我在views.py中执行此操作,几乎所有操作都有点重复,我经常使用它 # If we have an instance check that it belongs to the login. if some_object.user != request.user: return HttpResponseForbidden() 所以,我想知道其他人是如何处理这种功能的?我一直在考虑将其移动到所有对象的每
views.py中执行此操作,几乎所有操作都有点重复,我经常使用它
# If we have an instance check that it belongs to the login.
if some_object.user != request.user:
return HttpResponseForbidden()
所以,我想知道其他人是如何处理这种功能的?我一直在考虑将其移动到所有对象的每个on save方法
我可以举一些Django开发人员是如何做到这一点的例子吗?一定有更好的方法来检查用户可以编辑什么,对吗
我不会急于接受答案,因为我对Django非常陌生,所以我对经验更丰富的开发人员的权威回答非常感兴趣
多谢各位 如果使用基于类的视图,则mixin可以工作。。。您可以通过这样做来创建自己的
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\u object
方法以返回None
。当返回None
时,您可能需要在get
或post
方法中进行一些额外检查,以便可以返回HttpResponseForbidden
您还可以对任何使用get\u object
方法的基于类的视图使用此方法。您在视图中的何处执行这些检查?具体来说,您是否使用基于类的视图?是的,这是基于类的视图。什么和模型选项?