如何在 Django 中实现多种用户?

时间:2021-06-30 19:11:28

标签: django authentication django-models

我是 Django 的新手,所以如果我的问题看起来太基本,请多多包涵。 所以,我想为一种商店创建一个网络应用程序,其中我有三种不同类型的用户。

  1. 管理员(非超级用户)可以:
    • 为卖家(代理)创建、查看、更新、删除帐户
    • 向他们发放库存
  2. 可以:
    • 向客户出售库存物品(客户不能自己购买,只有卖家可以通过填写表格来完成)
    • 应在卖家提交表单后自动创建客户帐户,或者如果客户已有帐户,则应将购买添加到他们的帐户中
  3. 客户
    • 可以登录并查看他们的帐户

最好的方法是什么?使用身份验证组、配置文件模型或其他任何东西? 任何帮助都会很棒。如果问题中的某些内容不是很清楚,我可以提供更多详细信息。谢谢。

1 个答案:

答案 0 :(得分:0)

Django 已经有一个解决方案:a Group [Django-doc]。一个用户可以属于零个、一个或多个组。一个组可以有零个、一个或多个Permissions [Django-doc]

这些权限可以由一个Django模型定义,例如对于所有模型都有权限,viewaddchange,和删除某个模型的对象,但您也可以定义自定义权限,例如访问某个页面。如果用户所属的组中至少有一个具有此类权限的组,则该用户具有此类权限。

例如,您可以使用 @permission_required decorator [Django-doc]PermissionRequiredMixin [Django-doc] 来强制只有具有所需权限的用户才能看到给定的页面。

因此您可以为卖家、客户等创建群组。通常人们可以有多个角色,例如既是卖家又是客户,因此通过权限框架优雅地解决了这一问题。