Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何限制特定用户对UpdateView的访问?_Python_Django_Django Class Based Views - Fatal编程技术网

Python 如何限制特定用户对UpdateView的访问?

Python 如何限制特定用户对UpdateView的访问?,python,django,django-class-based-views,Python,Django,Django Class Based Views,我有这样一个模式: models.py: class Evento(models.Model): [...] user = ForeignKey(model=User) forms.py: class EventoForm(forms.ModelForm): class Meta: model = Evento 和generic view UpdateView的子类。我想将该视图的访问权限限制为在该Evento实例中指定的用户。最好的解决方法是什么?调

我有这样一个模式:

models.py:

class Evento(models.Model):
    [...]
    user = ForeignKey(model=User)
forms.py:

class EventoForm(forms.ModelForm):
    class Meta:
        model = Evento

和generic view UpdateView的子类。我想将该视图的访问权限限制为在该Evento实例中指定的用户。最好的解决方法是什么?

调用dispatch后,无论用户是否具有权限,您的所有数据都将保存。在调用调度之前,必须检查权限。看看这些片段。但更好的方法是重新定义get_对象方法:

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