如何限制特定用户对UpdateView的访问?
我有一个这样的结构:
在models.py文件中:
class Evento(models.Model):
[...]
user = ForeignKey(model=User)
在forms.py文件中:
class EventoForm(forms.ModelForm):
class Meta:
model = Evento
还有一个更新视图的子类UpdateView。我想限制只有特定的用户才能访问这个视图,这个用户是由Evento实例指定的。请问我该怎么做比较好呢?
1 个回答
6
在调用 dispatch 之后,所有的数据都会被保存,不管用户有没有权限。所以你必须在调用 dispatch 之前先检查一下权限。可以看看这个代码片段 http://djangosnippets.org/snippets/2426/。不过更好的方法是重新定义 get_object 方法:
def get_object(self, *args, **kwargs):
obj = super(EditarEvento, self).get_object(*args, **kwargs)
if obj.user != self.request.user:
raise PermissionDenied() #or Http404
return obj