【发布时间】:2015-07-15 23:35:49
【问题描述】:
我正在制作一个教初学者的基本应用程序。每个用户都可以写笔记,但我想让用户无法查看或更新其他用户的笔记。
我有以下观点,但我不得不重复自己。
from django.core.exceptions import PermissionDenied
...
class NoteUpdate(LoginRequiredMixin, UpdateView):
...
def get(self, request, *args, **kwargs):
self.object = self.get_object()
if self.object.owner != self.request.user:
raise PermissionDenied
return super(NoteUpdate, self).get(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
if self.object.owner != self.request.user:
raise PermissionDenied
return super(NoteUpdate, self).post(request, *args, **kwargs)
我觉得可能有一种方法可以做到这一点而无需重复自己。是的,我可以编写这样的方法并从两者中调用它:
def check_permission(self):
if self.object.owner != self.request.user:
raise PermissionDenied
但我真正的意思是我是否覆盖了错误的方法?有没有更传统的方法来做到这一点?覆盖 .get() 和 .post() 感觉有点奇怪
【问题讨论】:
标签: django django-views django-class-based-views