![](https://img-blog.csdnimg.cn/20210810115453417.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
学习笔记
日常学习点滴
Yuppie_Disease
这个作者很懒,什么都没留下…
展开
-
视图组件详解
原创 2021-09-05 20:26:18 · 264 阅读 · 1 评论 -
FRI.认证类
FRI.认证类1 序列化类钩子函数执行位置的源码 -反序列化的校验:字段自己的校验,局部钩子校验,全局钩子校验 2 drf的请求 -Request类的对象 -data:put,post提交的数据都在里面 -query_params:get请求提交的数据 -用起来跟django的request一样用 -指定可以解析的编码格式 -默认3种 -局部配置和全局配置 -优先级:视图类 --&g原创 2021-09-05 20:21:16 · 186 阅读 · 0 评论 -
THU.源码解析
THU.源码解析序列化类源码分析# 局部和全局钩子在哪执行ser.is_valid '在进行校验之后,会保存校验信息,,因此即使进行多次校验判断也只执行一次' --> BaseSerializer 的 is_valid --> self._validated_data = self.run_validation(self.initial_data) --> 是哪个类的 run_validation?不是 Field 类的,而是 Serializer 类的 -Seri原创 2021-09-05 20:20:41 · 197 阅读 · 0 评论 -
WED.序列化类之 Serializer
WED.序列化类之 Serializer类中方法和函数的区别方法绑定给对象的方法内有任何装饰器对象来调用,会自动传值,把对象当做第一个参数传进来绑定给类的方法类来调用,会自动传值,把类当做第一个参数传进来函数通过 @staticmethod 修饰的函数被称为普通函数,也被称为静态方法,有几个值,调用时就传入几个值。注意1、对象可以调用类的方法,且仍然会把类作为第一个参数自动传入2、类也可以调用对象的方法,'但只作为普通函数',不会将对象或类作为第一个参数自动传入原创 2021-09-05 20:19:49 · 127 阅读 · 0 评论 -
TUE.序列化组件的简单应用
TUE.序列化组件的简单应用CBV源码分析我们在路由中写了 IndexView.as_view() --> 实际上放了一个函数内存地址,源码是 --> 实际上是 view 的内存地址 @classonlymethod def view(request, *args, **kwargs): return self.dispatch(request, *args, **kwargs) return view 当请求来了,跟路由匹配成功,就会执行 vi原创 2021-09-05 20:18:58 · 88 阅读 · 0 评论 -
MON.DRF 入门规范
Web 开发模式前后端不分离 – 混合开发模式前后端分离 – 后端开发模式1、提高开发效率2、降低软件设计的耦合度 - 通过后端提供的接口,给不同类型的客户端传递数据 3、提高处理复杂业务的能力API接口通过网络,规定了前后台信息交互规则的url链接,也就是前后台信息交互的媒介1、长得像返回数据的url链接2、请求方式:get、post、put、patch、delete3、请求参数:json或xml格式的key-value类型数据4、响应结果:json原创 2021-09-05 20:18:19 · 2828 阅读 · 0 评论 -
FRI.Django 中的装饰器及 Auth 模块
FRI.Django 中的装饰器及 Auth 模块CBV 装饰器添加装饰器的三种方式No.1 Scheme 指名道姓from django.views import Viewfrom django.utils.decorators import method_decoratorclass MyLogin(View): @method_decorator(login_property) def get(self, request): return HttpRe原创 2021-08-22 13:22:00 · 142 阅读 · 0 评论 -
THU.Cookie 及 Session
THU.Cookie 及 Session批量插入数据 # for i in range(10000): # models.Book.objects.create(title='%s本书' % i) # models.Book.objects.filter(id__gt=0).delete() # 批量添加 book = [] # for i in range(100000): # book_obj = models.Book(title=原创 2021-08-20 16:06:38 · 92 阅读 · 0 评论 -
MON.神奇的双下划线及多表操作
MON.神奇的双下划线及多表操作神奇的双下滑线查询1、年龄大于 35 岁的数据res = models.User.objects.filter(age__gt=35)2、年龄小于 35 岁的数据res = models.User.objects.filter(age__lt=35)3、大于等于res = models.User.objects.filter(age__gte=35)4、小于等于res = models.User.objects.filter(age__lte=35)原创 2021-08-16 19:30:31 · 127 阅读 · 0 评论 -
FRI.模板语法及 ORM 常见操作
FRI.模板语法及 ORM 常见操作模板语法 – 传值def index(request): a = 123 b = 11.11 c = 'abcdefg' d = True e = [1, 2, 3,4 ] f = (5, 6, 7) g = {8, 9 ,10} h = {'name': 'egon', 'age': 18, 'k1':[1, {"hobby":'football'}]} # 模板中使用函数,不要加括号原创 2021-08-14 19:25:24 · 122 阅读 · 0 评论 -
THU.路由介绍及 JsonResponse
THU.路由介绍及 JsonResponse路由介绍路由匹配# 路由匹配url(r'test', views.test),url(r'testadd', views.testadd)"""url 方法第一个参数是正则表达式 只要第一个参数正则表达式能够匹配到的内容,name 就会立刻停止往下匹配 直接执行对应的视图函数 输入 url 的时候会默认加 '/' Django 内部会自动进行重定向 '/' 会在进行一次匹配"""分组给某一段正则表达式用小括号括起来原创 2021-08-14 19:21:50 · 174 阅读 · 0 评论 -
CBV 源码剖析
FBV 和 CBVFBV:funcation base view -- 基于函数的视图CBV:class base view -- 基于类的视图 1、先写一个类 2、继承 View 3、url(r'^login/', views.Mylogin.as_view())CBV 是根据请求方式区别访问哪个方法"""CBV - 能够直接根据请求方式不同直接匹配对应的方法执行"""CBV 源码urlpatterns = [ url(r'^admin/', admin.原创 2021-08-14 19:18:06 · 322 阅读 · 0 评论 -
Django 请求生命周期流程图
Django 请求生命周期流程图扩展知识点缓存数据库 - 浏览器想后端发送请求,在经过 Django 中间件之后,会先从缓存数据库寻找数据,如果没有则向后端数据库要数据。后端返回数据结果的同时在缓存数据库保存一份,类似于 DNS 解析过程 - 提高效率和响应时间...原创 2021-08-11 22:23:16 · 222 阅读 · 0 评论 -
WED.Django 数据操作及创建表关系
WED.Django 数据操作及创建表关系增from app import modles方式一res = modles.User.objcets.create(username=username,password=password)# 返回值就是当前被创建的对象本身print(res.username, res.password)方式二user_obj = modles.User(username=username, password=password)user_obj.save()原创 2021-08-11 22:22:16 · 110 阅读 · 0 评论 -
TUE.Django 链接 MySQL 及 Request 对象方法
TUE.Django 链接 MySQL 及 Request 对象方法Django 小白必备三板斧1.HttpResponse - 返回字符串类型数据 2.render - 返回 HTML 文件3.redirect - return redirect('http://www.mzitu.com/') - return redirect('/home/')request 对象方法def login(request): """ 返回一个登录界面 get 请求和原创 2021-08-10 12:26:10 · 101 阅读 · 0 评论 -
MON.初识 Django
MON.初识 Django纯手撸 Web 框架HTTP 协议"""网络协议HTTP 协议 明文传输数据HTTPS 协议 密文传输数据websocket 协议 密文传输数据四大特性 1、基于请求响应 2、基于 TCP、IP 作用于应用层之上的协议 3、无状态 3、短/长链接 数据格式 请求首行 请求头 请求体 响应状态码 1xx 2xx 200 3xx 301、302 4xx 403、404 5xx 500"""原创 2021-08-09 20:26:14 · 99 阅读 · 0 评论 -
THU.JavaScript
THU.JavaScriptJavaScript语言基础变量声明JavaScript的变量名可以使用 _,数字,字母,$组成,不能以数字开头声明变量使用 var,let 变量名 ; 的格式来进行声明注意1.变量名是区分大小写的。2.推荐使用驼峰式命名规则。3.保留字不能用做变量名。补充:1.ES6 新增了 let 命令,用于声明变量。其用法类似于var,但是所声明的变量只在let命令所在的代码块内有效。例如:for循环的计数器就很适合使用let命令。2.ES6 新增 co原创 2021-08-05 23:29:13 · 93 阅读 · 0 评论 -
WED.CSS 样式补充及 JavaScript 简介
WED.CSS 样式补充及 JavaScript 简介背景属性<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style> div { width: 400px; height:400px;原创 2021-08-05 19:37:26 · 119 阅读 · 0 评论 -
TUE.HTML 表单及 CSS
TUE.表单及 CSS表格<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <table border="1"> # border 即表示表格 <thead> <tr> # 一行数据原创 2021-08-03 23:48:20 · 101 阅读 · 0 评论 -
THU.查询条件
查询条件having# 功能与 where 一样where 在分组之前用,where 中的条件必须在表中存在having 在分组之后用distinct# 去重前提条件,数据必须一模一样如果数据中有主键,去重就失去意义order byorder by <字段> asc; 升序排序order by <字段> desc; 降序排序# oder by 默认为升序多重排序order by <字段>, <字段> desc;# 必须先执行第原创 2021-07-30 19:45:54 · 78 阅读 · 0 评论 -
WED.约束条件
WED.约束条件约束条件在已有条件的基础上再做限制unsigned设置无符号zerofill空余位置用 0 填充not null非空空字符串也显示为 NULL,但不等于 NULLdefault 12:00默认值unique'唯一限制'1.单列唯一create table <表名>(<字段> <数据类型>, <字段> <数据类型> unique)2.多列唯一create table &原创 2021-07-28 17:11:49 · 67 阅读 · 0 评论 -
TUE.MySQL 存储引擎及数据类型
TUE.MySQL 存储引擎及数据类型存储引擎存储引擎即存储数据的方式如何查看存储引擎show engines;有哪些存储引擎- MyISAM(掌握) ·MySQL5.5 及之前版本的默认引擎 ·查询速度闭 InnoDB 快,但安全性较低 # 不支持事务 # 表级锁-文件 ·frm --> 表结构 ·MYD --> 表数据 ·MYI --> 索引(目录),优点:查询速度快- InnoDB(掌握) ·MySQL5.6 及之原创 2021-07-27 16:35:40 · 69 阅读 · 0 评论 -
MON.MySQL
Mysql数据库SQL、DB、DBMS 分别是什么DB:DataBase – 数据库,数据库实际上在硬盘上以文件的形式存在DBMS:DataBase Management System – 数据库管理系统(本质上是 C/S 架构)SQL:结构化查询语言,是一门标准通用的语言,属于高级语言。标准的 SQL 适合于所有数据库产品。SQL 语句在执行的时候,实际上内部也会先进编译,然后再进行 SQL(SQL 语句的编译由 DBMS完成)三者之间的关系DBMS 负责执行 SQL 语句,通过执行原创 2021-07-27 16:34:21 · 120 阅读 · 0 评论 -
FRI.死锁及协程
FRI.死锁及协程死锁与递归锁什么是死锁所谓死锁就是两个或两个以上进程或线程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力作用,他们都将无法推进下去import timefrom threading import Thread, RLocklock1 = Lock()lock2 = Lock()def f1(name): lock1.acquire() print("%s 抢到了炮弹" % name) time.sleep(1) lock原创 2021-07-27 16:33:23 · 241 阅读 · 0 评论 -
THU.线程
THU.线程线程进程进程是操作系统分配资源的最小单位,一个进程至少有一个主线程,一个进程中可以开启多个线程有了进程为什么要有线程进程的缺陷进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也无法执行占用资源更多线程就是将一个进程拆分成一个个可以独立运行的基本单位,进而提高运行效率。# 进程是资源分配的最小单位,线程是 CPU 调度的最小单位进程和线程的区别进程间相原创 2021-07-27 16:31:23 · 66 阅读 · 0 评论 -
WED.队列
WED.Queue队列概念 ——multiprocess.Queue创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递方法from multiprocessing import ProcessQueue([maxsize])创建共享的进程队列。# 参数 :maxsize是队列中允许的最大项数。如果省略此参数,则无大小限制。Queue的实例q具有以下方法:q.get( [ block [ ,timeout ] ] ):返回q中的一个项目。原创 2021-07-27 16:30:45 · 72 阅读 · 0 评论 -
MON.网络编程
MON.网络编程网络通信实现想要实现网络通信,每台主机需要具备四要素本机的 IP 地址子网掩码网关的 IP 地址DNS 的 IP 地址获取四要素的两种方式静态获取手动配置动态获取DHCP 获取Socket 抽象层什么是套接字Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让So原创 2021-07-27 16:27:24 · 137 阅读 · 0 评论 -
THU.反射及内置方法
THU.反射及内置方法反射Python 是动态语言 ,而反射机制被视为动态语言的关键反射机制指的是在程序的运行状态中1.对于任意一个类,都可以知道这个类的所有属性和方法2.对于任意一个对象,都能够调用他的任意方法和属性'''这种动态获取程序信息以及动态调用对象的功能称为反射机制'''class Teacher: def __init__(self,full_name): self.full_name = full_name t = Teacher('原创 2021-07-15 20:44:29 · 140 阅读 · 0 评论 -
WED.继承补充以及多态
WED.继承补充以及多态属性查找单继承背景下class Foo: def f1(self): print('Foo.f1') def f2(self): print('Foo.f2') class Bar(Foo): def f1(self): print('Bar.f1') obj = Bar()obj.f2() # Foo.f2 B原创 2021-07-14 20:49:21 · 123 阅读 · 0 评论 -
TUE.面向对象的三大特性
TUE.面向对象的三大特性面向对象三大特征封装、继承、多态封装将封装的属性进行隐藏操作绑定方法绑定给对象凡是类中的功能或函数,默认情况下都是绑定给对象使用的例 1:class People: def __init__(self,name,age): self.name = name self.age = age def talk(self): pass p = People('xiaohua',18)原创 2021-07-13 20:37:48 · 97 阅读 · 0 评论 -
MON.面向对象编程
MON.面向对象面向过程编程面向过程不是一门技术,是一种编程思想优点复杂的问题简单化,流程化缺点扩展性差面向对象编程一种编程思想核心是"对象"二字对象即是"容器",用来盛放数据与功能的对象的终极奥义,就是将数据和功能高度"整合" ("整合"程度越高,程序的解耦合程度就越高)容器 ≈ 程序 = 数据 + 功能优点扩展性强缺点编程复杂度高1. .py 文件# 数据a = 1b = 0# 功能def sum(x,原创 2021-07-12 18:29:14 · 110 阅读 · 0 评论 -
Week06_一周内容总结
原创 2021-07-10 10:53:36 · 105 阅读 · 0 评论 -
FRI.迭代器
FRI.迭代器迭代器什么是迭代器迭代器是用来迭代取值的工具迭代就是一个重复的过程,但是每次重复都是基于上一次的结果进行,类似于汽车中期改款迭代器分为可迭代对象(Iterable Object)和迭代器对象(Iterator Object)# 单纯的重复不叫迭代while True: 1 + 1# 初识迭代操作count = 1while count < 5: print(count) count += 1优点找到一种通用的迭代取值的方案原创 2021-07-10 10:52:13 · 85 阅读 · 0 评论 -
THU.装饰器
THU.装饰器装饰器什么是装饰器器指的是工具,可以定义成函数装饰指的是为其他事物添加额外的东西点缀装饰器指的是定义一个函数,该函数是用来为其它函数添加额外的功能为何要用装饰器开放封闭原则开放 – 拓展功能是开放的封闭 – 对修改源代码是封闭的装饰器本质是装饰源代码,是为了在不修改被装饰对象源代码以及调用方式的前提下,为被装饰对象拓展功能装饰器的语法糖import timefrom functools import wrapsdef delete_t(mis原创 2021-07-10 10:51:43 · 65 阅读 · 0 评论 -
WED.名称空间和作用域
WED.名称空间和作用域函数对象func = 内存地址可以把函数当成变量去用,即可以赋值给其他变量def func(): pass# 表示将 func 的内存地址赋值给 f,因此两者是同一个内存地址f = funcprint(f, func)可以当做参数传入def foo(x) # x = func 的内存地址 print(x) x() foo(func) # foo(func的内存地址)可以把函数当做另一个函数的返回值def f原创 2021-07-10 10:51:08 · 92 阅读 · 0 评论 -
TUE.函数
TUE.函数什么是函数盛放功能的容器,方便重复使用使用原则先定义后调用类型提示Type hintingPython3(3.5 以上版本)新增类型提示功能,例如我们可以为函数增加类型提示信息,而不影响函数本身的执行注释的一般规则是参数名后跟一个冒号’:’,然后再跟一个 expression,这个 expression 可以是任何形式def func(a: 'spam', b:(1, 10), c: float) --> int: return a + b +原创 2021-07-10 10:50:48 · 185 阅读 · 0 评论 -
FRI.文件系统
FRI.文件系统文件系统文件是操作系统提供给用户/应用程序操作硬盘的一种功能文件系统是操作系统内核中负责组织管理硬盘的程序,文件系统提供了文件这种功能操作系统: 文件系统 1 文件系统 2 文件系统 3硬盘: 分区 1 分区 2 分区 3 sda1 sda2 sda3PS: 一个文件系统对应一个分区df = disk filesystemdf原创 2021-06-27 12:25:50 · 177 阅读 · 0 评论 -
THU.文本处理三剑客
THU.文本处理三剑客文本处理三剑客Sed流式编辑器,主要擅长对文件的编辑操作,我们可以事先定制好编辑文件的指令,然后让sed自动完成对文件的整体编辑# 用法sed 选项 '定位+命令' 文件路径# 选项-n 取消默认输出-r 支持扩展正则元字符(由于尚未学习正则,所以此处暂作了解)-i 立即编辑文件# 定位行定位: 1定位到第一行 1,3代表从第1行到第3行 不写定位代表定位所有行正则表达式定位: /egon/ 包含egon的行 /^原创 2021-06-27 12:25:19 · 221 阅读 · 0 评论 -
WED.文件处理基础
WED.文件处理基础一、Linux 系统的目录结构Windows 系统 —— Linux 系统 文件夹 —— 目录Windows: 以多根的方式组织文件 C:\ D:\ E:,即有多个顶级文件夹Linux: 以单根的方式组织文件 /FHS(Filesystem Hierarchy Standard)指的是文件系统层次化标准,多数Linux版本采用这种文件组织形式,是以树形的结构来组织文件的二、绝对路径与相对路径从根(顶级目录)开始原创 2021-06-27 12:24:48 · 583 阅读 · 0 评论 -
TUE.操作系统及 Shell 命令
TUE.操作系统及 Shell 命令操作系统相关单用户模式破解 root 密码在 GRUB 界面按 e 进入内核rw init=/sysroot/bin/shctrl + xchroot /sysrootpasswd (root)密码密码touch /.autorelabelGRUB 加密grub2-setpasswordEnter password:Cofurm password:reboot光盘修复模式/救援模式1. 调整启动顺序,使用光盘启动2. T原创 2021-06-27 12:24:18 · 240 阅读 · 0 评论