Python中Django有没有非超级管理员的后台自动生成方案?
请教一下各位。公司想做一个小型的 b2b 平台。django 可以自动生成后台管理页面,并且可以在 admin 编辑。请问是否有非超级管理员的后台管理自动生成功能?或者修改一下设置达到这种效果?这样,商家的后台可以自动生成,可以极大提升项目效率。
Python中Django有没有非超级管理员的后台自动生成方案?
Django自带admin后台,默认只有超级用户(is_superuser=True)能访问。要让非超级管理员也能用,关键在于权限控制。Django的权限系统基于模型,通过User模型的user_permissions字段和Group模型来管理。
最直接的方法是给普通用户分配特定模型的权限,然后让他们访问admin。但默认admin只对staff用户(is_staff=True)开放。所以,你需要:
- 创建普通用户,设置
is_staff=True(允许进入admin),但保持is_superuser=False。 - 通过Django的权限系统,给这个用户或他所在的组分配具体的权限(如
app_label.view_modelname,app_label.change_modelname等)。
示例:创建一个有文章管理权限的编辑用户
假设你有个博客应用blog,里面有Post模型。
# 在Django shell中操作,或写在管理命令/视图中
from django.contrib.auth.models import User, Permission
from django.contrib.contenttypes.models import ContentType
from blog.models import Post
# 1. 创建用户,设为staff
editor = User.objects.create_user(username='editor', password='somepassword')
editor.is_staff = True # 关键!允许进入/admin
editor.save()
# 2. 获取Post模型的content type
content_type = ContentType.objects.get_for_model(Post)
# 3. 获取Post模型的所有权限(或只选你需要的)
permissions = Permission.objects.filter(content_type=content_type)
# 例如,只分配查看和修改权限:
# change_perm = Permission.objects.get(codename='change_post', content_type=content_type)
# view_perm = Permission.objects.get(codename='view_post', content_type=content_type)
# 4. 将权限分配给用户
editor.user_permissions.set(permissions) # 分配所有权限
# 或 editor.user_permissions.add(change_perm, view_perm)
# 现在,用户'editor'可以登录/admin,但只能看到并操作Post模型。
更清晰的管理:使用组(Group)
对于多个用户有相同角色,用组更方便。
from django.contrib.auth.models import Group
# 创建“编辑”组
editors_group, created = Group.objects.get_or_create(name='Editors')
# 给组分配权限
editors_group.permissions.set(permissions) # 使用上一步的permissions
# 将用户加入组
editor.groups.add(editors_group)
自定义admin界面显示
默认admin会显示用户有权限的所有模型。如果你想进一步控制,可以自定义ModelAdmin的has_view_permission, has_change_permission等方法,但通常分配标准权限就够了。
一句话总结:把用户is_staff设为True,然后通过Django的权限系统精确控制他能访问的模型和操作。
如果你的 user table 是 django 自带的话,超级用户和普通用户都是一条数据,区别只是权限而已。如果是自定义的 user 表,其实也差不多,都是要 override save(),同时在 django 的 user table 里给商家创建个用户。但是不大建议用 django admin 直接给商家做后台,随便点复杂的功能都得重写自带的模板,何况你还是 b2b 的商户平台,有那功夫用自己顺手的前端架子也都撸出来了,可定制性还高很多
django admin 自带了权限管理,用户分为 staff, superuser。可以给商家用户为 staff, 然后给与相应的表的访问权限。只能精确到表一级。也就是说同一个表 A 商户可以访问 B 商户的数量。如果要更精确需要利用第三方类库来管理行级别的权限,或者可以简单的在表里添加 created_by 字段,然后定制一下 admin 过滤出来商户自己的商品。
我們團隊做了一套,基於 ant design 的 Django 管理後台。
求一下
商家的后台可以自动生成,但商家的需求能不能抽象化,如果不能旧没有通用系统,必须定制话
区别只是权限啊~可以自己写一套~
不一一回复了。多谢各位指点。


