问题描述
TL;DR;
无论如何在 Django 中,是否可以在执行查询之前自动根据默认权限(添加、更改、查看、删除)检查用户/请求的权限?
我对 Django 非常陌生,我想要实现的是在我的应用程序中使用 Django 的权限,而无需为每个视图/请求(post/...)实际编写代码。我有很多组都具有与之关联的真实权限,而且很难检查这些权限中的每一个。
假设我有一个名为 Article
的模型和一个名为 readers
的组,只有一个权限:article.read_article
;并且首页有一个表单,可以用来添加新文章。
有什么方法可以阻止 reader
组中的用户使用此表单添加新文章而不实际为其编写代码?例如,基于所涉及的请求、组、权限和模型。或者在模型中写一些东西在执行查询之前检查所有必要的权限。
解决方法
有几种方法可以实现它。
-
在您的模板中,仅向有权创建文章的用户显示表单。
-
创建一个预先保存的 signal 处理程序。获取对当前用户的引用。检查用户的权限。如果用户没有权限引发异常。引发异常将阻止保存记录。