12 2022 档案
摘要:
目录 (1)Web应用模式及API接口 (2)Restful规范 (3)drf安装和简单使用 (4)源码分析 (5)序列化器-Serializer (6)局部和全局响应配置 (7)视图 (8)路由-Routers (9)认证-Authentication (10)权限-Permissions (11
阅读全文

摘要:相关博客 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memc
阅读全文
摘要:#RBAC(Role-Based Access Control:基于角色的访问控制) #django的auth就是内置了一套RBAC的权限系统 #django中 #后台权限控制(公司内部系统,crm客户关系管理,erp,协同平台) user表 group表 permission表 user_grou
阅读全文
摘要:在用户注册信息登陆后,想记录用户的登录状态,或者为用户创建身份认证的凭证,不再使用Session认证机制,而使用Json Web Token(本质就是token)认证机制 1、构成 JWT就是一段字符串,由三段信息文本用.链接一起就构成了JWT字符串, aaaa.bbbb.cccc 第一个部分成为头
阅读全文
摘要:rest framework可以自动帮助生成接口文档 接口文档以网页的方式呈现 自动接口文档能生成的是继承自APIView及其子类的视图 1、安装依赖 rest framework生成接口文档需要coreapi库的支持 pip install coreapi 2、设置接口文档访问路径 在总路由中添加
阅读全文
摘要:三种分页方式: PageNumberPagination LimitOffsetPagination CursorPagination #settings.py全局配置 REST_FRAMEWORK = { 'PAGE_SIZE': 2, } PageNumberPagination # urls.
阅读全文
摘要:drf数据的增删改查 模型类 from django.db import models class BaseModel(models.Model): is_delete = models.BooleanField(default=False) # auto_now_add创建的时候,不需要手动插入时
阅读全文
摘要:封装Response对象 #utils.py #自定制响应 from rest_framework.response import Response class CommonResponse(Response): def __init__(self, code=10, msg='成功', data=
阅读全文
摘要:异常处理,统一接口 #全局配置 REST_FRAMEWORK = { 'EXCEPTION_HANDLER': 'app01.app_auth.my_exception_handler', } #统一接口的返回 #app_auth.py # 自定义异常处理的方法 from rest_framewor
阅读全文
摘要:过滤组件 对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-filter扩展来增强支持 pip install django-filter 在配置文件中添加过滤后端的设置 INSTALLED_APPS=[ 'django_filter',#需要注册应用 ] #全局配置,也可以局部配
阅读全文
摘要:频率限制 可以对接口访问的频次进行限制,以减轻服务器压力 一般用于付费购买次数,投票等场景使用 1、内置的频率限制 未登录用户访问频次 全局使用:限制未登录用户1分钟访问五次 #settings.py REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES': ['
阅读全文
摘要:权限Permissions 权限控制可以限制用户对于视图的访问和对于具体数据对象的访问。 在执行视图的dispatch方法前,会先进行视图访问权限的判断 在通过get_object()获取具体对象时,会进行模型对象访问权限的判断 区分不同的用户访问不同 的接口 1、源码分析 #APIView 》di
阅读全文
摘要:认证Authentication 1、认证的写法 #认证的实现 -1.写一个类,继承BaseAuthentication,重写authenticate,认证的逻辑写在里面,返回两个值,一个值最终给了Request对象的user,,如果认证失败就抛异常:AuthenticationFailed -2.
阅读全文
摘要:路由Routers 对于视图集ViewSet,除了可以自己手动指明请求方式与动作action之间,还可以使用Routers来快速实现路由信息 rest framework提供了两个router SimpleRouter DefaultRouter #1.在urls.py中配置 path('books
阅读全文
摘要:视图 #两个视图基类 APIView GenericAPIView(继承APIView),涉及到数据库和序列化类的操作,尽量用GenericAPIView 先写模型类和序列化类,然后配置路由 models.py from django.db import models # Create your m
阅读全文
摘要:局部和全局响应配置 rest framework提供了一个响应类Response,使用该类构造响应对象时,响应的具体数据内容会被转换成(render渲染)成符合前端需求的类型 rest framework提供了Renderer渲染器,用来根据请求头中的Accept(接收数据类型声明)来自动转换响应数
阅读全文
摘要:序列化器-Serializer 作用: 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型 反序列化,完成数据校验功能 #先在models.py中写创建表 from djan
阅读全文
摘要:cbv ModelViewSet继承与View (djanog原生View) path('books/',views.Books.as_view())#在这个地方应该写函数内存地址,views.Books.as_view()执行完,是个函数内存地址,as_view是一个类方法,类直接来调用,会把类自
阅读全文
摘要:drf安装和简单使用 1、安装 #安装 pip install djangorestframework ==2、使用== 1. settings.py中 INSTALLED_APPS = [ 'rest_framework' ] 2. 在models.py中写表模型 class Book(model
阅读全文
摘要:Restful规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征性状态转移)。它首次出现在2000年Roy Fielding的博士论文中 RESTFUL是一种定义Web API接口的设计风格,尤其适合前后端分离的应用模式中。 这种
阅读全文
摘要:Web应用模式 在Web开发中,有两种模式: 前后端分离 #前后端分离: 只专注于后端,返回json格式数据 前后端不分离 # 前后端混合开发(前后端不分离) 返回的是HTML的内容,需要写模板 # 动态页面(查数据库),静态页面(一个静止的html) # 页面静态化 (2)API接口 通过网络,规
阅读全文
摘要:@ bbs是一个前后端不分离的全栈项目,前后端需要自己一步步完成 1、流程 # 1. 需求分析 架构师+产品经理+开发组组长 在跟客户谈需求之前,会大致了解客户的需求,然后自己先设计出一套比较好写的方案,在个客户沟通交流中,引导客户往我们想好的方案上靠。 形成一个初步方案, # 2. 项目设计 架构
阅读全文
摘要:auth模块 1、创建超级用户(管理员) """ 在创建好一个django项目后,直接执行数据库迁移命令后会自动生成很多表, django_session ............. 其中就包括 auth_user表 django在启动之后就可以直接访问admin路由,需要输入用户名和密码,数据参考
阅读全文
摘要:基于Django中间件引发的编程思想(重点) importlib模块使用 能够以字符串的形式导入模块,最小单位只能到模块名 # 1. 创建一个py文件 aaa.py # 2. 创建一个mypach文件夹,里面创建一个bbb.py文件,写上name='zhao' 然后再aaa.py中书写以下代码 im
阅读全文
摘要:csrf跨站请求伪造 1、前戏 """ 钓鱼网站 搭建一个跟正规网站一摸一样的界面(中国银行) 用户进入到我们的网站,用户给某人打钱, 用户打钱操作确确实实是提交给了中国银行的系统,用户的钱也确确实实减少了,但是唯一不同是打钱的账户不是用户想要打的账户,变成了另一个账户 内部本质: 在钓鱼网站的页面
阅读全文
摘要:Django中间件 只要是涉及到全局相关的功能都可以使用中间件方便的完成 全局用户身份校验 全局用户权限校验 全局访问频率校验 """ django中间件是django的门户 1.请求来的时候需要经过中间件才能达到真正的django后端 2.响应走的时候最后也需要经过中间件才能发送出去 """ 1、
阅读全文
摘要:Cookie与Session HTTP被设计为”==⽆态==”,也就是俗称“脸盲”。 这⼀次请求和下⼀次请求 之间没有任何状态保持,我们⽆法根据请求的任何⽅⾯(IP地址,⽤户代理等)来识别来自同⼀ 个⼈的连续请求。 实现状态保持的⽅式:在客户端或服务器端存储与会话有关的数据 (客户端与服务器端的⼀次
阅读全文
摘要:校验性组件:froms组件 1、前戏 """ 写一个注册功能,获取用户名和密码,利用form表单提交数据 在后端判断用户名和密码是否符合一定条件 用户名中不能含有西游记 密码不能少于三位 将提示信息展示到前端页面 """ # 前端 <form action="" method="post"> <p>
阅读全文
摘要:自定义分页器 1、分页推导 queryset对象支持切片操作 确定用户访问的页码 url?page=1 current_page=request.GET.get('page',1) 前端获取到 的都是字符串数据,需要类型转换 current_page = request.GET.get('page'
阅读全文
摘要:批量插入 bulk_create() # urls.py from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admi
阅读全文
摘要:Django自带的序列化组件(为drf做铺垫) (drf:django rest framework) #在前端获取到,后端用户表里所有的数据,并且是列表套字典的格式 # views.py from django.http import JsonResponse def ab_ser(request
阅读全文
摘要:基于jQuery的Ajax实现(重点) 异步提交 局部刷新 """ 案例:github注册示例, 动态获取用户名,实时的跟后端确认并实时展示到前端(局部刷新) 发送请求方式 1 浏览器地址栏直接输入url回车 GET请求 2 a标签href属性 GET请求 3 form表单 POST请求/GET请求
阅读全文
摘要:choices参数(数据库字段设计常见) 当数据可以被列举完,能够供用户选择的时候,能够考虑用choices参数,好比性别,成绩,学历,婚否等等 #models.py from django.db import models # Create your models here. class User
阅读全文
摘要:模型层 1、==测试脚本== """ 当你只是想想测试django中的某一个 py文件内容,那么你可以不用书写前后端交互的形式,而是直接写一个测试脚本即可 脚本代码无论写在应用下的tests.py还是写在自己单独开设的py文件都可以 """ #测试环境准备 # 1.去manage.py中拷贝部分代码
阅读全文
摘要:模版层 1、模板语法传值 变量相关:{{ }} 逻辑相关:{% %} #templates文件夹下的login.html <body> <p>{{ n }}</p> <p>{{ f }}</p> <p>{{ s }}</p> <p>{{ b }}</p> <p>{{ l }}</p> <p>{{ d
阅读全文
摘要:
目录 (1)Django引入 (2)Django基本操作 (3)Django小白必会三板斧 (4)静态文件配置 (5)pycharm链接数据库(MySQL) (6)Django链接MySQL (7)Django的orm (8)Django请求周期流程图(重要) (9)Django路由层 (10)Dj
阅读全文

摘要:视图层 视图响应的过程: 当⽤户从浏览器发起⼀次请求时,⾸先django获取⽤户的请求,然后通过路由 (urls)将请求分配到指定的视图函数。视图函数负责进⾏相应的业务处理,处 理完毕后把结果(可能是json、html等)浏览器 1、三板斧 """ HttpResponse 返回字符串类型 rend
阅读全文
摘要:当⽤户在您的Web应⽤程序上发出⻚⾯请求时,Django会获取url中请求路径(端 ⼝之后的部分),然后通过urls.py⽂件查找与路径相匹配的视图,然后返回HTML 响应或404未找到的错误(如果未找到)。在urls.py中,最重要的是 urlpatterns 列表。这是您定义URL和视图之间映射
阅读全文
摘要:Django请求周期流程图(重要)
阅读全文
摘要:Django ORM ==orm不会创建库,只能创建到表的层面。需要自己手动敲命令创建库== 1、创建模型表 ORM:"""对象关系映射""" 作用:能够让一个不会用sql语句的小白,也能通过python面向对象的代码简单快捷的操作数据库 不足之处:封装成都太高,有时候sql效率偏低,需要自己写sq
阅读全文
摘要:Django链接MySQL django不能创建库,需要自己手动创建,并指定 # 默认用sqlite3 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3'
阅读全文
摘要:pycharm可以充当很多数据库的客户端 点击MySQL后,如果是第一次使用pycharm中的MySQL,那么需要点击download下载对应驱动 ==如果提示下载失败的话,可以点击Driver,选择**MySQL for 5.1,**然后重新下载,重新测试连接,成功,测试链接成功后,点击apply
阅读全文
摘要:引入 #登录功能 """ 将html 文件默认放在templates文件夹下 将网站所使用的静态文件默认放在static文件夹下 静态文件 前端写好的,能够直接调用使用的都可以称为静态文件 网站写好的js文件 网站写好的css文件 网站用到的图片文件 第三方前端框架 ... 拿来就可以直接使用的 "
阅读全文
摘要:""" httpResponse 返回字符串 render 返回html文件 redirect 重定向 return redirect('https:www.baidu.com/') 跳转别人的网址 return redirect('/home/') 跳转自己的网址 """ # views.py f
阅读全文
摘要:1、命令行操作 1. 1.==创建django项目== """先切换到对应的盘,然后再创建""" django-admin startproject 项目名 #目录结构 ├── mysite #项⽬⽬录 | │ ├── __init__.py #包标志 │ ├── settings.py #项⽬配置
阅读全文
摘要:(一)纯手撸web框架 # HTTP协议 """ 网络协议 HTTP协议: 数据传输是明文 HTTPS协议:数据传输是密文 websocket协议:数据传输是密文 四大特性 : 1.基于请求响应 2.基于TCP/IP,作用于应用层之上的协议 3.无状态 4.短/无链接 数据格式: 请求首行 请求头
阅读全文