django - 如何在 Django 中实现多种用户?
问题描述
我是 Django 新手,所以如果我的问题看起来太简单,请多多包涵。所以,我想为一种商店创建一个网络应用程序,其中我有三种不同类型的用户。
- 管理员(非超级用户)可以:
- 为卖家(代理)创建、查看、更新、删除帐户
- 向他们发放库存
- 卖家可以:
- 将库存商品出售给客户(客户不能自己购买,只有卖家可以通过填写表格来购买)
- 客户帐户应在卖方提交表格后自动创建,或者如果客户已有帐户,则应将购买添加到他们的帐户中
- 顾客
- 可以登录并查看他们的帐户
最好的方法是什么?使用身份验证组、配置文件模型或其他任何东西?任何帮助都会很棒。如果问题不是很清楚,我可以提供更多细节。谢谢。
解决方案
Django 已经有一个解决方案:[ Group
Django-doc]。一个用户可以属于零个、一个或多个组。一个组可以有零个、一个或多个Permission
s [Django-doc]。
这些权限可以由 Django 模型定义,例如所有模型都有权限,可以查看、添加、更改和删除某个模型的对象,但您也可以定义自定义权限,例如访问某个页面. 如果至少有一个用户所属的组具有这样的权限,则用户就拥有这样的权限。
例如,您可以使用@permission_required
装饰器 [Django-doc]或PermissionRequiredMixin
[Django-doc]来强制只有具有所需权限的用户才能看到给定页面。
因此,您可以为卖家、客户等创建组。人们通常可以有多个角色,例如既是卖家又是客户,因此可以通过权限框架优雅地解决。
推荐阅读
- django - 如何在 Django TestCase 拆解期间修复 IntegrityErrors?
- python-3.x - AWS EC2 Ubuntu 不支持 ProcessPoolExecutor?
- sql-server - 在 SQL Server 上执行 SQLDump
- android - 如何对列表进行排序
按列表 飘飘然 - hyperledger-fabric - 更新连接配置文件:当前身份尚未注册
- prebid.js - Prebid 无法识别 CMP
- asp.net-mvc - 如何正确通过 ajax 调用将 DataSourceRequest 对象发送到控制器?
- javascript - 为什么 stringify() 只返回第一级对象数组
- google-app-maker - 从服务器脚本中记录的字符串中获取值
- c# - PasswordTokenRequest 返回 invalid_client