项目准备流程 和 权限六表

一、项目准备

1. 创建django项目

2. 创建数据库 —— init文件中声明mysql —— settings中配置数据库

import pymysql
pymysql.install_as_MySQLdb()
# 为该项目创建一个数据库
DATABASES = {
    ‘default‘: {
        ‘ENGINE‘: ‘django.db.backends.mysql‘,
        ‘NAME‘: ‘dg_proj‘,
        ‘USER‘: ‘root‘,
        ‘PASSWORD‘: ‘123‘
    }
}

3. 配置中国际化

# 国际化 汉化
LANGUAGE_CODE = ‘zh-hans‘

TIME_ZONE = ‘Asia/Shanghai‘

USE_I18N = True

USE_L10N = True

USE_TZ = False

4. 创建media文件夹 —— 配置中配置

# 自己配置的 图像文件夹和路经
MEDIA_URL = ‘/media/‘
MEDIA_ROOT = os.path.join(BASE_DIR, ‘media‘)

5. drf相关

# app中注册drf

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
    ‘api.apps.ApiConfig‘,

    ‘rest_framework‘,
]

# 新建utils文件夹存放自定义功能 —— 放入自己二次封装的responces 和 自定义的异常模块 —— 注册

REST_FRAMEWORK = {
    # 全局配置异常模块
    ‘EXCEPTION_HANDLER‘: ‘utils.exception.exception_handler‘,

}

6.开项目下总路由

from django.conf.urls import url, include
from django.contrib import admin

from django.views.static import serve
from django.conf import settings
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^api/‘, include(‘api.urls‘)),

    url(r‘^media/(?P<path>.*)‘, serve, {‘document_root‘: settings.MEDIA_ROOT}),
]

7.api下子路由

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r‘^test/$‘, views.TestAPIView.as_view()),
    url(r‘^test1/$‘, views.TestAuthenticatedAPIView.as_view()),
    url(r‘^test2/$‘, views.TestAuthenticatedOrReadOnlyAPIView.as_view()),
    url(r‘^test3/$‘, views.TestAdminOrReadOnlyAPIView.as_view()),
]

二 、权限六表

1.认证方式

基于用户权限访问控制的认证 - RBAC - Role-Based Access Control自己了解:基于auth的认证规则基于jwt的认证责任——企业常用
Django框架采用的是RBAC认证规则,RBAC认证规则通常会分为 三表规则、五表规则,Django采用的是六表规则

2. 表分析

三表:用户表、角色表、权限表五表:用户表、角色表、权限表、用户角色关系表、角色权限关系表六表:用户表、角色表、权限表、用户角色关系表、角色权限关系表、用户权限关系表

3. 六表间信息交互(正向反向查)

用户表:访问角色groups,访问权限user permissions角色表:访问用户user_set,访问权限permissions权限表:访问用户user_set,访问角色group_set(这一个源码中无提示)

4.models中自定义用户表测试

from django.db import models
from django.contrib.auth.models import AbstractUser,User
class User(AbstractUser):
    mobile = models.CharField(max_length=11, unique=True)

    class Meta:
        db_table = ‘api_user‘
        verbose_name = ‘用户表‘  # admin中用来显示的表名
        verbose_name_plural = verbose_name  # 表名字最后不加s

    def __str__(self):
        return self.username  # 让admin中每个用户名显示自己用户名,不写默认名全都一样
# 写完后去settings中配置自定义的user表,然后数据库迁移
AUTH_USER_MODEL = ‘api.User‘

5.数据库迁移失败问题

重点:如果自定义User表后,再另一个项目中采用原生User表,完成数据库迁移时,可能失败  1)卸载Django重新装  2)将django.contrib下面的admin、auth下的数据库迁移记录文件清空,不要删除init文件

6.写测试脚本 测试六表间信息交互

# django脚本话启动
import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dg_proj.settings")
django.setup()

#用户访问其他表
from api import models
user = models.User.objects.first()  # type: models.User
print(user.username)
print(user.groups.first().name)
print(user.user_permissions.first().name)

# 角色表访问其他表
from django.contrib.auth.models import Group
group = Group.objects.first()
print(group.name)
print(group.user_set.first().username)
print(group.permissions.first().name)

# 权限表访问其他表
from django.contrib.auth.models import Permission
p_16 = Permission.objects.filter(pk=16).first()
print(p_16.user_set.first().username)
p_17 = Permission.objects.filter(pk=17).first()
print(p_17.group_set.first().name)

原文地址:https://www.cnblogs.com/xp1315458571/p/11716183.html

时间: 2024-10-08 11:45:59

项目准备流程 和 权限六表的相关文章

drf三大认证:认证组件-权限组件-权限六表-自定义认证组件的使用

三大认证工作原理简介 源码分析: from rest_framework.views import APIView 源码分析入口: 内部的三大认证方法封装: 三大组件的原理分析: 权限六表分析 基于用户权限访问控制的认证(RBAC):Role-Based-Access-Control;基于auth的认证规则(了解). Django框架采用的是RBAC认证规则:通常分为:三表规则.五表规则.Django采用的是六表规则. 三表:用户表.角色表.权限表 五表:用户表.角色表.权限表.用户角色关系表.

DJANGO 学生管理系统项目创建流程 -- 单表管理

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; f

大数据技术之_18_大数据离线平台_01_项目开发流程+大数据常用应用/分析平台/业务处理方式+数据分析平台的数据来源+数据处理的流程+项目集群的规模+需求分析+技术架构/选型

一.项目开发流程1.1.项目调研1.2.项目需求分析1.3.方案设计1.3.1.概要设计1.3.2.详细设计1.4.编码实现1.4.1.单元测试1.4.2.集成测试1.4.3.压力测试1.4.4.用户测试二.大数据常用应用2.1.数据出售2.2.数据分析2.2.1.百度统计2.2.2.友盟2.2.3.其他统计分析组织2.3.搜索引擎2.3.1.solr2.3.2.luence2.3.3.luence & solr 对比2.4.推荐系统(高数)2.4.1.技术2.4.2.算法2.5.精准营销2.5

网站项目建设流程概述

网站项目建设流程概述 一.概念 网站项目管理就是根据特定的规范.在预算范围内.按时完成的网站开发任务. 二.需求分析 项目立项 我们接到客户的业务咨询,经过双方不断的接洽和了解,并通过基本的可行性讨论够,初步达成制作协议,这时就需要将项目立项.较好的做法是成立一个专门的项目小组,小组成员包括:项目经理,网页设计,程序员,测试员,编辑/文档等必须人员.项目实行项目经理制. 客户的需求说明书 第一步是需要客户提供一个完整的需求说明.很多客户对自己的需求并不是很清楚,需要您不断引导和帮助分析.曾经有一

VueCli3.0全栈项目-资金管理系统带权限(node/element/vue)

课程简介:通过本系列课程,可以快速的掌握全栈开发流程, 包括node.js的接口搭建, vue前端项目的构建, element-ui视图的构建. 一套应有尽有的课程! 课程目录:1.Vue全栈-最终成果展示.mp42.Node接口搭建-express搭建服务器.mp43.Node接口搭建-连接MongoDB数据库.mp44.Node接口搭建-搭建路由和数据模型.mp45.Node接口搭建-搭建注册接口并存储数据.mp46.Node接口搭建-使用全球公认头像gravatar.mp47.Node接口

外包项目开发流程规范(ODC)

    忙碌时候时间过得很快,没时间记录下工作的一些东西,以下记录外包项目开发的一些流程规范: ODC软件系统开发流程: 例行版本:1.需求分析(用户.ODC) 1)找用户谈需求 2)确定系统上线时间.移交用户测试时间2.工作量的估算(ODC) 1)各个功能点需要的人天(初步估算,后续需求有改动,需要重新更新)3.工作计划安排(ODC) 1)开发计划-指定哪个功能由哪个开发人员进行开发,什么时候开发完成(移交系统测试) 2)测试计划-几时移交系统测试.几时移交用户测试4.系统开发及自测(ODC)

使用.NET MVC框架项目开发流程(项目开发流程)

MVC项目开发流程 整理需求,进行需求分析.项目设计. 整理数据项,建数据库做前期准备,并整理字典. 建立所需数据库表和视图和模型. 页面实现其初步功能(跳过逻辑后台代码),只是实现页面之间的跳转以及展示(预览审核使用). .............................................................................................................................. 审核通过……开始写数据

Unity3D游戏开发之虚拟现实项目开发流程

Unity3D游戏开发之虚拟现实项目开发流程 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一.系统设计与资料的收集与整理 1.              与项目投资单位沟通并进行系统设计: 2.              收集整理规划图.效果图.现场照片: 3.              拍摄比干文化及景区介

K2项目开发流程

(自己的学习资料) K2项目开发流程: 1.在VS2013中设计流程,并在K2 Workspce中测试流程 首先是新建新建一个k2的Process文件..kprx后缀. 在里面创建所需要的流程.由于我是初学者,创建工作流时审批人都先指向自己,易于实现. 审批人有两种方法指向,一指向特定的人,二根据数据库中的人. 在工作流创建完成之后.打开k2 workspace里面的workflow server.里面是一些已存在的工作流.点开来找到instances选中节点,点击start进行工作流的测试.