返回介绍

示例 1:Python Django 后台管理

发布于 2024-10-03 16:34:02 字数 2513 浏览 0 评论 0 收藏 0

数据架构:用户表、角色表、权限表、资源列表

  • 用户表 auth_user:账号、姓名、邮箱、添加时间、最后登录时间、账号是否禁止登录
  • 角色表 auth_group:商品管理员、订单管理员、超级管理员
  • 权限表 auth_permission:对某一个路由的增删改查权限。路由是指向资源 。
  • 资源列表(路径正则) :资源名称(项目模块名称),资源路径(后台路由)
  • 资源分类 django_content_type:商品模块、订单模块、营销模块、权限模块、内容模块、其他模块

备注:面向资源编程,一个资源就是一个路由 URL。资源根据实际权限控制需要,可以是菜单、视图、模块、操作方法(如增删改查、上传下载)等。

后端如何判断用户权限?

  1. 用户发送 Method + URL
  2. 后端首先查询是哪一个用户,然后查询当前用户的角色
  3. 判断这个角色是否可以访问此 URL 对应的方法
  4. 如果用户有权限访问此 URL 就返回数据,不能访问就返回 401 状态码。

Django 自带权限管理是基于角色的权限管理模型。用户 -> 组 -> 权限

django 自带表分为二类,

  • 一类是 auth 开头的,需要激活了认证应用 auth 才生效,这些表是权限管理表,可管理用户、用户组、权限,内容对象。
  • 另一类是 django 开头的表,功能是 app 管理、会话管理、管理日志、数据迁移记录。

表格 django 自带表

表名表字段功能说明备注
auth_groupid, name认证组名称创建时空组
auth_group_permissionid, group_id, permission_id组和权限关联 
auth_permissionid, name, content_type_id, code_name权限项名称预创建
auth_userid, password, last_login, is_superuser,
username, first_name, last_name,email,
is_staff, is_active, date_joined
认证用户 
auth_user_groupsid, user_id, group_id用户和组关联 
django_admin_logactive_time, object_id, user_id,,,管理日志 
django_content_typeid, app_label, model内容对象app > model
django_migrationsid, app, name, appliedORM 记录 
django_sessionsession_key, session_date, expire_date会话管理 

激活认证应用-auth

# /django/
from django.contrib.auth.models import User, Group

class UserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer
    permission_classes = [permissions.IsAuthenticated]

创建超级用户 admin(普通用户创建可以通过接口或页面上操作 )

$ python manage.py createsuperuser --email admin@example.com --username admin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文