根据请求和模型应用 Django 权限

问题描述

TL;DR;

无论如何在 Django 中,是否可以在执行查询之前自动根据认权限(添加、更改、查看、删除)检查用户/请求的权限?


我对 Django 非常陌生,我想要实现的是在我的应用程序中使用 Django 的权限,而无需为每个视图/请求(post/...)实际编写代码我有很多组都具有与之关联的真实权限,而且很难检查这些权限中的每一个

假设我有一个名为 Article 的模型和一个名为 readers 的组,只有一个权限:article.read_article;并且首页一个表单,可以用来添加文章

有什么方法可以阻止 reader 组中的用户使用此表单添加文章而不实际为其编写代码?例如,基于所涉及的请求、组、权限和模型。或者在模型中写一些东西在执行查询之前检查所有必要的权限。

解决方法

有几种方法可以实现它。

  1. 在您的模板中,仅向有权创建文章的用户显示表单。

  2. 创建一个预先保存的 signal 处理程序。获取对当前用户的引用。检查用户的权限。如果用户没有权限引发异常。引发异常将阻止保存记录。