首页 > 解决方案 > 如何在 Django 中实现多种用户?

问题描述

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

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

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

标签: djangoauthenticationdjango-models

解决方案


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

这些权限可以由 Django 模型定义,例如所有模型都有权限,可以查看添加更改删除某个模型的对象,但您也可以定义自定义权限,例如访问某个页面. 如果至少有一个用户所属的组具有这样的权限,则用户就拥有这样的权限。

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

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


推荐阅读