自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 [Django]MVT模式的详解

关于 Django 数据驱动 Web 应用的总体设计把数据存取逻辑、业务逻辑和表现逻辑组合在一起的概念有时被称为软件架构的 Model-View-Controller (MVC)模式。 在这个模式中, Model 代表数据存取层,View 代表的是系统中选择显示什么和怎么显示的部分,Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。为什么用缩写?像 MVC 这样的明确定义模式的主要用于改善开发人员之间的沟通。 比起告诉同事,“让我们采用抽象的数据存取方式,然后

2020-08-24 09:46:28 4564 1

原创 django应用之corsheaders[跨域设置]

安装pip install django-cors-headers注册应用INSTALLED_APPS = (…‘corsheaders’,…)中间件设置MIDDLEWARE = […‘corsheaders.middleware.CorsMiddleware’,‘django.middleware.common.CommonMiddleware’,…]添加白名单CORS_ORIGIN_WHITELIST = (‘http://127.0.0.1:8080’,‘http:

2020-08-10 10:12:55 284

原创 关于python类的多态 举例理解

首先类的多态特性,要满足以下 2 个前提条件:继承:多态一定是发生在子类和父类之间;重写:子类重写了父类的方法。class WhoSay: def say(self,who): who.say()class CLanguage: def say(self): print("调用的是 Clanguage 类的say方法")class CPython(CLanguage): def say(self): print("调用的是 CP

2020-08-09 17:26:45 282

转载 Python私有属性和受保护的属性原理解析

前言:Python不能像Java那样使用 private 和 protected 修饰符创建私有属性和受保护的属性,但是Python有个简单的机制,能避免子类意外覆盖“私有”属性。首先定义一个Dog类:class Dog: 'Dog class' def __init__(self, age, sex, mood): self.age = age self._sex = sex self.__mood = mood一、 受保护的属性:

2020-08-09 17:14:27 1196

原创 Python3 装饰器理解与使用、带参数的装饰器、多个装饰器调用顺序

Python装饰器(英文decorator)装饰器的本质也是函数 为其他函数添加附加功能。装饰器的存在其实就是为了在需要添加新功能时不影响之前版本的使用的同时来增加新功能,即实现原函数无侵入的增加拓展功能,其实也是一种“偷懒”的办法。它的使用场景较多,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。Python装饰器的两大原则(1)在不修改被修饰函数源代码的同时为其增加功能(2)不修改被装饰的函数的调用方式装饰器

2020-08-09 17:06:10 1062

原创 python中socket模块详解

socket要使用socket.socket()函数来创建套接字。其语法如下:socket.socket(socket_family,socket_type,protocol=0)socket_family可以是如下参数:socket.AF_INET IPv4(默认)socket.AF_INET6 IPv6socket.AF_UNIX 只能够用于单一的Unix系统进程间通信socket_type可以是如下参数:socket.SOCK_STREAM  流式socket , for TCP (默

2020-08-09 15:16:05 308

原创 python的赋值、深拷贝和浅拷贝的区别

赋值、浅拷贝、深拷贝三种方式:在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用一般有三种方法,alist=[1,2,3,[“a”,“b”]](1)直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变b=alistprint b[1, 2, 3, [‘a’, ‘b’]]alist.append(5)print alist;print b[1, 2,

2020-08-09 15:05:49 157

原创 python3 闭包问题

谈谈对Python中闭包的理解Python中的闭包是一个比较模糊的概念,有很多朋友都认为不好理解,但是随着深入学习,就会发现闭包无论如何都是需要去理解的,下面我将自己对闭包的理解进行阐述,希望能够对你有所帮助 ~闭包的理解我们可以将闭包理解为一种特殊的函数,这种函数由两个函数的嵌套组成,且称之为外函数和内函数,外函数返回值是内函数的引用,此时就构成了闭包。闭包的格式下面用伪代码进行闭包格式的描述def 外层函数(参数): def 内层函数(): print("内层函数执

2020-08-09 10:45:01 150

转载 python3 用super解决类的钻石继承(菱形继承)的问题

Python的继承以及调用父类成员python子类调用父类成员有2种方法,分别是普通方法和super方法假设Base是基类普通继承:class Base(object): def __init__(self): print “Base init” class Medium1(Base): def __init__(self): Base.__init__(self) print “Medium1 init” class Medium2(Base): def

2020-08-09 10:25:49 434

原创 python 进程线程协程的区别:

进程:一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单位,进程拥有自己独立的内存空间,所以进程间数据不共享,开销大。线程: 调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程存在一个进程至少有一个线程,叫主线程,而多个线程共享内存(数据共享,共享全局变量),从而极大地提高了程序的运行效率。协程:是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存

2020-08-09 09:50:35 101

原创 python3-多线程锁机制

"""线程中的锁机制""""""有两个线程A和B,A和B里的程序都加了同一个锁对象,当线程A率先执行到lock.acquire()(拿到全局唯一的锁后).线程B只能等到线程A释放锁lock.release()后(归还锁)才能运行lock.acquire()(拿到全局唯一的锁)并执行后面的代码"""使用锁lock = threading.Lock() # 生成锁对象,全局唯一lock.acquire() # 获取锁。未获取到的线程会阻塞程序,直到获取到锁才会往下执行lock.relea

2020-08-09 09:07:58 441

原创 python3 队列queue的用法

queue分类python3 queue分三类:先进先出队列后进先出的栈优先级队列他们的导入方式分别是:from queue import Queuefrom queue import LifoQueuefrom queue import PriorityQueueQueue 对象已经包含了必要的锁,所以你可以通过它在多个线程间多安全地共享数据。 当使用队列时,协调生产者和消费者的关闭问题可能会有一些麻烦。一个通用的解决方法是在队列中放置一个特殊的值,当消费者读到这个值的时候,终止执行。

2020-08-08 13:37:41 1013

原创 python 迭代器与生成器的初步认识使用

迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式,是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。递归和迭代的区别:递归是内部指针等待的一个过程,需要一直嵌套得到结果,而迭代是遍历的过程,前面的过程结束后可以进行下一项,不需要等待字符串,列表或元组对象都可用于创建迭代器for循环实际上实现了__iter__()方法生成了一个迭代器对象,然后一步步ne

2020-08-07 11:21:09 126

原创 python-类和对象关系及对象创建过程

Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的面向对象技术简介类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。 类由 类名 属性 方法 构成方法:类中定义的函数。类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。方法重写:如果从父类继承的方法不能满

2020-08-06 16:46:17 507

原创 python-函数局部变量与全局变量

1 局部变量局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就爆掉了如果在函数内部定义与某个全局变量一样名称的局部变量,就可能会导致意外的效果,可能不是你期望的。因此不建议这样使用,这样会使得程序很不健全2 全局变量全局变量是在整个py文件中声明,全局范围内都可以访问注意 不可变类型的全局变量在内部函数调用后不会发生修改,但可变类型的变量在调用后会根据函数操作而变化3 区别作用域不同 局部变量只在该函数中有作用,在函数外调用无效全局变量在整个py中声明,

2020-08-06 16:27:41 1043

原创 python-字符串与列表的切片操作

Python 访问子字符串,可以使用方括号来截取字符串,如下实例:var1 = 'Hello World!'var2 = "Runoob" print ("var1[0]: ", var1[0])print ("var2[1:5]: ", var2[1:5])

2020-08-06 16:03:25 453

原创 python中的循环与循环嵌套、递归函数

Python 中的循环语句有 for 和 while。while 循环Python 中 while 语句的一般形式:while 判断条件(condition):执行语句(statements)……在 while … else 在条件语句为 false 时执行 else 的语句块。语法格式如下:while :<statement(s)>else:<additional_statement(s)>简单语句组类似if语句的语法,如果你的while循环体中只有一条语句

2020-08-06 15:51:56 921

原创 python的输入输出、基础运算及判断总结

1 格式化输入/输出:比如 你想打印一个字符串加数字 直接用字符串方式来解决a = ‘asdfasf’b = 123print(a+str(b))这样的代码不优雅,并且有时候忘了格式转换会出错如果用格式输出就好多了print(’%s, %s’ % (a,b))或者:f-string在功能方面不逊于传统的%-formatting语句和str.format()函数,同时性能又优于二者,且使用起来也更加简洁明了,因此对于Python3.6及以后的版本,推荐使用f-string进行字符串格式化。

2020-08-06 14:51:50 221

原创 python基础计算机语言及语法

1、变量命名:一.python变量名命名规则:1.变量名通常由字母,数字,下划线组成;2.数字不能作为变量名开头;3.不能以python中的关键字命名;4.变量名要有意义;5.不要用汉字和拼音去命名;6.变量名要区分大小写;大写与小写是不同的变量!7.推荐使用驼峰型(GuessAge或guessAge)和下划线(guess_age)来命名;8.常量通常使用大写来定义.2 python的语言类型:python是一种解释性语言,与编译型语言不同处在于:程序控制权不同编程性语言控制权在

2020-08-06 14:23:49 152

原创 python数据类型的属性和方法以及可变数据类型与不可变数据类型的区别

Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值多个变量赋值Python允许你同时为多个变量赋值。例如:a = b = c = 1以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。您也可以为多个对象指定多个变量。例如:a, b, c = 1, 2, “john”

2020-08-04 11:02:48 406

原创 【django】页面静态化实现

安装pip install django-crontab在项目配置文件中添加应用INSTALLED_APPS = [...'django_crontab', # 定时任务...]# 生成静态化页面的功能块from collections import OrderedDictfrom django.conf import settingsfrom django.template import loaderimport osimport timefrom goods.model

2020-07-12 11:46:13 524

原创 【REST framework】router路由生成器

路由Routers对于视图集ViewSet,我们除了可以自己手动指明请求方式与动作action之间的对应关系外,还可以使用Routers来帮助我们快速实现路由信息。REST framework提供了两个router1 SimpleRouter2 DefaultRouter路由router形成URL的方式:SimpleRouter:DefaultRouterDefaultRouter与SimpleRouter的区别是,DefaultRouter会多附带一个默认的API根

2020-07-12 10:39:58 264

原创 【Django】设置和读取cookies、session

cookiescookies的定义:存放缓存数据的一个载体Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)Cookie是存储在浏览器中的一段纯文本信息,由于cookies是储存在客户端浏览器中的,所以安全性较低,建议不要存储敏感信息如密码cookies的特点:1 键值对存在2 不同域名的Cookie是不能互相访问

2020-07-11 11:26:19 251

原创 【Django】获取不同类型的请求数据

请求url中的参数:请求:http://127.1.1.1:8009/test/python/3 # url url(r"^test/(?P<language>[a-z]+)/(?P<version>\d+)/$", views.test), # views def test(request, language, version): print(language) print(version)通过直接在视图函数中传入获取。获取请求url中

2020-07-11 10:05:49 527

原创 Django项目流程和项目后端配置logs、mysql、redis

项目流程Log日志介绍Loggers:把日志传给handlersHandlers:控制日志存放到哪里Filters:那些日志可以从loggers传送到handlersFormatters:日志的格式日志记录级别logging模块的重点在于生成和处理日志消息。每条消息由一些文本和指示其严重性的相关级别组成。级别包含符号名称和数字值CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTESTCRTICAL: 关键错误/消息

2020-07-06 16:19:21 1449

转载 HTTPResponse , Response和 JsonResponse的区别

HTTPResponsehttpresponse 是由django创建的,他的返回格式为HTTPResponse(content=响应体,content_type=响应体数据类型,status=状态码),可以修改返回的数据类型,比较适合返回 图片,视频,音频等二进制文件JsonResponseJsonResponse 是 HTTPResponse 的子类,适用于处理json格式的数据,可以帮助我们将数据转换成json类型,但是不能返回模板,设置响应头Content-Type 为applicatio

2020-07-06 14:42:43 569

原创 DRF中的view视图

DRF-View控制序列化器的执行(检验、保存、转换数据) 控制数据库查询的执行APIView是REST framework提供的所有视图的基类,继承自Django的View父类。APIView与View的不同之处在于:传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象;视图方法可以返回REST framework的Response对象,视图会为响应数据设置(render)符合前端要求的格式;任何APIException异

2020-06-15 21:11:25 420

原创 Drf框架与序列化器

DRF框架的环境DRF需要以下依赖:Python (2.7, 3.0+)Django (1.10, 1.11, 2.0)DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)安装DRFpip install djangorestframework添加rest_framework应用我们利用在Django框架user2中,在settings.py的INSTALLED_APPS中添加

2020-06-15 11:17:19 281

原创 Django类视图和中间件

类视图:1 代码可读性好2 类视图相对于函数视图有更高的复用性中间件中间件Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。1 项目启动 执行中间件的(初始化1)位置的方法2 用户发送对应的请求在视图处理之前执行中间件内函数的(视图处理之前执行的内容1)位置的方

2020-06-15 09:22:32 109

原创 [Django]orm的简介与用法介绍

ORM的简介不论是MVC框架还是MVT框架,都包含了一个重要的部分,就是orm,ORM实现了数据模型与数据库的耦合与解耦,即数据模型的设计不再需要依赖特定的数据库,进过简单的配置就可以实现更换数据库,提高代码的通用性。ORM中,O是object,类对象,R是relation,关系,M是mapping,映射它帮我们把类和数据表进行了一个映射,可以让我们通过类和类对象就能操作它所对应的表格中的数据。ORM根据我们设计的类帮我们自动帮我们生成数据库中的表格,而不需要我们自行去建表。创建表格:

2020-06-07 20:23:49 287

原创 Django中的中间件与类视图

类视图函数视图:以函数的方式定义的视图称为函数视图类视图:以类的方式定义的视图称为类视图代码可读性好类视图相对于函数视图有更高的复用性因此大部分视图都使用类进行封装。from django.views import Viewclass ClassView(View): """类视图的介绍""" def get(self, request): """get请求方法""" print('get请求方法进次函数') return

2020-06-03 18:13:10 143

原创 Django中url请求的响应与处理,设置及操作cookies与session

urlurl是统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。截取url中特定的部分,如test/python/3/,可以在服务器端的路由中用正则截取;#views中def test(request, language, version): print('language:%s' % language) print("version

2020-06-03 17:20:35 317

原创 Django框架是用什么语言写的?采用什么模式?和MVC与MVT的区别?

Django是一个开放源代码的Web应用框架,**由Python写成。采用了MTV的框架模式**,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件

2020-06-01 17:01:41 844

原创 TCP三次握手四次挥手

三次握手关于TCP协议三次握手的问题,在面试中是最为常见的知识点之一,得到了很多面试官的青睐,如果这个知识点没有掌握好,面试官要是问得深入一点,求职者往往会不知所措。为什么建立连接需要三次握手?首先非常明确的是两次握手是最基本的。第一次握手,客户端发了个连接请求消息到服务端,服务端收到信息后知道自己与客户端是可以连接成功的,但此时客户端并不知道服务端是否已经接收到了它的请求,所以服务端接收到消息后的应答,客户端得到服务端的反馈后,才确定自己与服务端是可以连接上的,这就是第二次握手。客户端只有确定了自

2020-05-14 16:11:48 128

原创 使用UDP和TCP实现简单数据传发

传输控制协议TCP:tcp(传输控制协议)定义了两台计算机之间进行可靠的传输而交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。协议规定了TCP软件怎么识别给定的计算机上的多个目的的进程如何对分组重复这类差错进行恢复。协议还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的特点就是面向连接的可靠的字节流服务用户数据报协议UDP:UDP用户数据报协议是一个简单的面向数据报的传输层协议,提供的是非面向连接的、不可靠的数据流传输,UDP不提供可靠性,也

2020-05-13 21:12:30 707

原创 EventTarget方法:addEventListener() 事件监听

<!DOCTYPE html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <!-- <link rel="stylesheet" href=""> --> <style type="text/css"> d

2020-05-12 10:57:54 962

原创 document节点和element节点的属性和操作

JavaScript这门语言通过Document类型来表示文档。在浏览器中,**用document来表示整个HTML或者XML文档**。**document节点是文档的根节点,其它节点都是它的子节点**。只要浏览器开始载入HTML文档,这个节点对象就存在了,可以直接调用。document节点:- 子节点:对于HTML文档来说,document对象一般有两个子节点。1)第一个是docume...

2020-05-03 21:16:04 2963 2

原创 DOM节点关系及节点操作

DOM把HTML和XML文档视为一种树结构,这种结构称为节点树(DOM Tree),浏览器载入文档后,文档中的标签被解析成一系列的节点,**节点是DOM的最小组成单位**。**每一个节点都是一个对象**,都具备特定的属性和方法。而且节点之间彼此都有关系。注意:DOM不属于JavaSript,因为Java中也存在,它仅仅是一套API。DOM节点的属性:节点对象.nodeType;元素节点返...

2020-05-03 12:21:25 485

原创 JavaScript的语句笔记

表达式在JavaScript中是短语,那么语句(statement)就是JavaScript证据或者命令。使某件事发生的一个方法是计算带有副作用的表达式,诸如赋值和函数调用这些有副作用的表达式,是可以作为单独语句的,这种吧表达式当做语句的用法也称作表达式语句。类似的还有声明语句,声明语句用来声明新变量或定义新函数。JavaScript中的语句有:条件语句(condition),循环语句(loo...

2020-05-02 11:33:54 99

原创 JavaScript的表达式和运算符笔记

原始表达式:原始表达式是最简单的表达式,包含常量或直接量、关键字和变量。直接量是直接在程序中出现的值 如"hello"//字符串直接量,123//数字直接量,/pattern/ //正则表达式直接量。还有一些保留字构成的原始表达式:true\false\null\this。最后一种是变量原始表达式:i \ sum\undefined(undefined是全局变量,区别于null,undefine...

2020-04-30 21:24:42 218

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除