一、项目准备

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权限六表的更多相关文章

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

    三大认证工作原理简介 认证.权限.频率 源码分析: from rest_framework.views import APIView 源码分析入口: 内部的三大认证方法封装: 三大组件的原理分析: 权 ...

  2. Auth主件的(RBAC) 六表

    1.RBAC 和Auth的区别 基于RBAC一般Djagno 会用 和Auth 相对来说高级一点 2.RBAC( role Based Accsess Control)的六表之间的数据传输 2.1 D ...

  3. [GitHub]第六讲:开源项目贡献流程

    Github 是目前世界上最大的开源项目的托管交流平台.贡献开源项目的流程也是 Github 全力支持的,也一样是遵循 Github Flow,虽然跟前面团队合作流程会有一点差别.在团队内部,大家都是 ...

  4. web理论知识--网页访问过程(附有Django的web项目访问流程)

    当我们闲暇之余想上网看看新闻,或者看个电影,通常的操作是:打开电脑.打开浏览器.输入网址.浏览页面信息.点击自己感兴趣的连接......那么有没有想过,这些网页从哪里来的?过程中计算机又做了什么事情了 ...

  5. Django问卷调查项目思路流程

    Django问卷调查项目思路流程: 1 后端思路 : 需求分析 ---- 找出各实体对应关系 ---- 设计model架构 ---- 统一资源封装 --- 提供资源API入口 ---- 设计项目实体功 ...

  6. Django (九) 项目开发流程&项目架构

    项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. ​ 2. 概要设计及详细设计: 开发对需求进行概要设计,包 ...

  7. Django边学边记—新手Django建项目各流程细节

    一.准备虚拟环境 1)安装 virtualenv pip install virtualenv 2)virtualenvwrapper pip install virtualenvwrapper-wi ...

  8. [Python学习] Django 权限控制

    本文为大家讲解 Django 框架里自带的权限模型,从理论到实战演练,带领大家了解 Django 里权限是怎么一回事. 一.主要内容 1.什么是权限管理? 2.Web 权限 3.Django 权限机制 ...

  9. 巨蟒django之权限6: 权限控制表设计&&登录权限

    1.权限控制表设计 内容 . 什么是权限? . 为什么要有权限? 不同用户拥有不同的功能 . 在web开发中,什么是权限? url 代表 权限 . 开发一个权限的组件,为什么要开发组件? . 表结构的 ...

随机推荐

  1. 一个不错的spring 学习博客

    http://www.iteye.com/blogs/subjects/spring-tittle-tattle

  2. 一、uart&tty驱动

    一.I.MX6 UART驱动 文件路径:\linux_IMX6_CoreC_3..35_for_Linux\drivers\tty\serial\imx.c .驱动入口函数:imx_serial_in ...

  3. C语言折半查找法练习题冒泡排序

    C语言折半查找法练习题 折半查找法: 折半查找法是效率较高的一种查找方法.假设有已经按照从小到大的顺序排列好的五个整数num[0]~num[4],要查找的数是key,其基本思想是: 设查找数据的范围下 ...

  4. 怎么搭建python环境?很简单,就几步的事

    现在学习python的人越来越多了,而学习python必备的就是搭建python环境,那么,到底怎么搭建python环境呢? 首先,你需要有安装包,这个去官网下载就可以了,如果不会的话,可以看文章底部 ...

  5. 数论-质因数(gcd) UVa 10791 - Minimum Sum LCM

    https://vjudge.net/problem/UVA-10791/origin 以上为题目来源Google翻译得到的题意: 一组整数的LCM(最小公倍数)定义为最小数,即 该集合的所有整数的倍 ...

  6. labview 机器视觉

    学习labview机器视觉,一定要安装VAS,VDM.先安装labview,再安装VAS和VDM. 安装完成后,前面板出现vision 后面板出现视觉与运动函数

  7. work of 1/5/2016

    part 组员                今日工作              工作耗时/h 明日计划 工作耗时/h    UI 冯晓云 UI页面切换,词本显示下滑条     6 继续下滑条等增删补 ...

  8. 联通友华通信光纤猫PT952G设置无线路由光猫桥接拨号

    #0x1 登陆后台,点击网络,点击宽带设置.选择第二个接口. 0x2 只修改模式,改成Bridge,其他无需修改.然后直接接路由器拨号就行,或者电脑都行. 0x4  恢复默认拨号,这样修改以后,直接连 ...

  9. 解决vue element table行列不齐问题

    全局加入如下样式即可(app.vue): body .el-table th.gutter{ display: table-cell!important; }

  10. VUE前端项目配置代理解决跨域问题

    VUE前端项目配置代理解决跨域问题 问题如下,经常在本地调试接口出现这种问题 解决方式1:Chrome 的扩展插件 以前使用Chrome 的扩展插件,但是有时候还是会出现莫名其妙的问题. 需要梯子才行 ...