7) 项目准备流程 和 django权限六表
一、项目准备
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': ''
}
}
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)
7) 项目准备流程 和 django权限六表的更多相关文章
- drf三大认证:认证组件-权限组件-权限六表-自定义认证组件的使用
三大认证工作原理简介 认证.权限.频率 源码分析: from rest_framework.views import APIView 源码分析入口: 内部的三大认证方法封装: 三大组件的原理分析: 权 ...
- Auth主件的(RBAC) 六表
1.RBAC 和Auth的区别 基于RBAC一般Djagno 会用 和Auth 相对来说高级一点 2.RBAC( role Based Accsess Control)的六表之间的数据传输 2.1 D ...
- [GitHub]第六讲:开源项目贡献流程
Github 是目前世界上最大的开源项目的托管交流平台.贡献开源项目的流程也是 Github 全力支持的,也一样是遵循 Github Flow,虽然跟前面团队合作流程会有一点差别.在团队内部,大家都是 ...
- web理论知识--网页访问过程(附有Django的web项目访问流程)
当我们闲暇之余想上网看看新闻,或者看个电影,通常的操作是:打开电脑.打开浏览器.输入网址.浏览页面信息.点击自己感兴趣的连接......那么有没有想过,这些网页从哪里来的?过程中计算机又做了什么事情了 ...
- Django问卷调查项目思路流程
Django问卷调查项目思路流程: 1 后端思路 : 需求分析 ---- 找出各实体对应关系 ---- 设计model架构 ---- 统一资源封装 --- 提供资源API入口 ---- 设计项目实体功 ...
- Django (九) 项目开发流程&项目架构
项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. 2. 概要设计及详细设计: 开发对需求进行概要设计,包 ...
- Django边学边记—新手Django建项目各流程细节
一.准备虚拟环境 1)安装 virtualenv pip install virtualenv 2)virtualenvwrapper pip install virtualenvwrapper-wi ...
- [Python学习] Django 权限控制
本文为大家讲解 Django 框架里自带的权限模型,从理论到实战演练,带领大家了解 Django 里权限是怎么一回事. 一.主要内容 1.什么是权限管理? 2.Web 权限 3.Django 权限机制 ...
- 巨蟒django之权限6: 权限控制表设计&&登录权限
1.权限控制表设计 内容 . 什么是权限? . 为什么要有权限? 不同用户拥有不同的功能 . 在web开发中,什么是权限? url 代表 权限 . 开发一个权限的组件,为什么要开发组件? . 表结构的 ...
随机推荐
- Python常见数据结构-Tuple元组
Python Tuple基本特点 元组与列表类似,不同之处在于元组的元素不能修改. 与字符串和列表一样,可以根据下标进行切片索引. 元组使用小括号,单一元素的元组定义是必须加一个逗号. Python ...
- 数据结构-Python 列表(List)
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现 一.列表常用方法 1.创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可. eg:list1 = ['1', ' ...
- Java入门第一阶段总结
前言 写了三周的模拟题,对原本就厌恶的模拟更加深恶痛绝.但是不得不说模拟题是对一门语言入门掌握其语法成效最快的一类题,轻松地从C入门到了Java.一直坚信各门语言都是想通的,一力破万法. 作业过程总结 ...
- idea打包报错Cleaning up unclosed ZipFile for archive D:\m2\commons-beanutils\commons-beanutils\1.9.2\...
关于idea的打包报错:Cleaning up unclosed ZipFile for archive D:\m2\commons-beanutils\commons-beanutils\1.9.2 ...
- HBase-2.2.3源码编译-Windows版
源码环境一览 windows: 7 64Bit Java: 1.8.0_131 Maven:3.3.9 Git:2.24.0.windows.1 HBase:2.2.3 Hadoop:2.8.5 下载 ...
- 对于不平凡的我来说,从小我就在想为啥别人就什么都能拥有,而看看自己却什么都没有,对于原来的我就会抱怨爸妈怎么没有别人父母都能给自己想要的,可我从未想过父母的文化只有小学,其实父母内心也有太多的辛酸,所以我不甘愿如此,从此让我在大学里面直接选择一个让我巨大的转折————IT。
对于不平凡的我来说,从小我就在想为啥别人就什么都能拥有,而看看自己却什么都没有,对于原来的我就会抱怨爸妈怎么没有别人父母都能给自己想要的,可我从未想过父母的文化只有小学,其实父母内心也有太多的辛酸,所 ...
- 知识点一:OSI模型初识
OSI(开放系统)模型是一组协议的集合,它使得两个不同的系统之间能够互相通信,分为七层 第一层:物理层 物理层负责把逐个的比特(01)从一个节点移动到下个节点 具体体现在如何把比特转换成电或者光信号. ...
- ajax按楼层加载数据
代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...
- Laravel 上手增删改查
拿到一个框架,除了解框架,还要能实现基本的CURD操作. 添加 1.配置路由,指定添加页面: // routes/web.php 中增加如下: // 添加页面.存放路径 Laravel7/resour ...
- HTML+CSS教程(五)外联样式、组选择器、圆角边框、样式优先级、伪类、盒子模型、元素溢出
一.外联样式 通过link标签引入外部css文件夹中的xxx.css文件到head标签中 例: 二. 1.组选择器 选择器名称1,选择器名称2,选择器名称3,…{属性:属性值;属性;属性值} 例: & ...
