python - 如何限制某些用户访问 UpdateView?

标签 python django django-class-based-views

我有这样的架构:

模型.py:

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

表单.py:

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

和通用 View UpdateView 的子类。我想将对该 View 的访问限制为该 Evento 实例中指定的用户。最好的方法在哪里?

最佳答案

调用 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

关于python - 如何限制某些用户访问 UpdateView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424658/

相关文章:

django - 是否可以在 django 管理命令中创建子解析器?

django - 从 Django 1.7+ 中删除模型时要做的事情

python - Django 博客文本格式化(初学者)

python - 如何在网格中选择不同的随机点

python - 将表达式分配给变量并执行它

python - pydoc.doc 无法检索到 "os.path.sep"

Django 基于类的 View CreateView url 解析

python - Pip 安装 EOFError

python - Django 自定义身份验证后端似乎没有被调用?

forms - Django 基于类的通用 View 注册用户