![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
文章平均质量分 89
HMMHMH
这个作者很懒,什么都没留下…
展开
-
Django框架——视图
目录RequestResponseAPIView(一级视图)GenericAPIView(二级视图)Mixin子类视图(三级视图)路由RouterRequestREST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。REST framework...原创 2018-11-03 11:55:55 · 395 阅读 · 1 评论 -
Flask框架——ORM数据库
目录一.通过SQLAlchemy(ORM)操作数据库的流程二.注意点三.创建数据表类(继承db.Model)四.增删改操作五.查询数据库六.relationship关联七.数据库迁移八.蓝图一.通过SQLAlchemy(ORM)操作数据库的流程1.安装扩展包, pip install flask_sqlalchemy2.安装数据库驱动, pip install mysqldb / pymy...原创 2018-10-12 11:55:54 · 8022 阅读 · 1 评论 -
jinja2模板用法详解
目录渲染模板语法过滤器代码复用特有变量及函数 渲染模板用法:render_template(⽂件名,key=value)模板文件一般默认路径为/templates下的文件,可通过key=value的方式往模板文件中传递参数,模板中使用{{key}}的方式获取参数。例:@app.route("/")def index(): ........ return render_templa...原创 2018-10-12 10:51:21 · 4462 阅读 · 0 评论 -
Flask框架——CSRF保护
目录CSRF攻击如何防御CSRF攻击Flask框架中的CSRF保护机制CSRF攻击CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账…造成的问题:个人隐私泄露以及财产安全。攻击示意图:如何防御CSRF攻击在客户端...原创 2018-10-12 10:36:31 · 550 阅读 · 0 评论 -
Flask框架——上下文、flask_script扩展
目录上下文(引用池,引用区)flask_script扩展上下文(引用池,引用区)上下文:相当于一个容器,保存了 Flask 程序运行过程中的一些信息。为了避免大量可有可无的参数把视图函数弄得一团糟,Flask使用上下文临时把某些对象变为全局访问。Flask中有两种上下文,请求上下文和应用上下文1.请求上下文:变量名描述request封装每次请求的相关数据,可以称...原创 2018-10-12 10:14:39 · 221 阅读 · 0 评论 -
HTTP状态保持(cookie、session)
目录cookiesessionQZZW'qcookiecookie:由服务器生成,存储在客户端的数据HTTP协议是无状态的协议,一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接,这就意味着服务器无法从连接上跟踪会话。Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足,他会给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样...原创 2018-10-12 09:52:17 · 481 阅读 · 0 评论 -
jQuery——入门基础(获取元素、样式、属性,选择集、过滤器、样式类)
目录Jquery的加载方法获取元素操作样式和属性选择集和过滤器选择集转移绑定常用事件操作样式类名Jquery的加载方法(1)$(document).ready(function(){})(2)$(function(){})特点:对原生Js进行封装后,执行顺序在原生Js前,执行速度更快。获取元素选择器参数id选择器$(“#id”)class类选择器$(“....原创 2018-09-22 10:13:42 · 573 阅读 · 0 评论 -
Javascript——进阶(事件、数组操作、字符串操作、定时器)
目录事件属性数组字符串操作定时器变量的作用域封闭函数弹框接收数据事件属性参数描述onclick鼠标点击事件onmouseover鼠标移入标签,触发行为onmouseout鼠标移出标签,触发行为数组操作方法创建arry = Arry(1,2,3) 或 arry = [1,2,3]获取元素arry[下标]获取长度...原创 2018-09-22 10:02:29 · 167 阅读 · 0 评论 -
Javascript——入门基础
目录变量类型显示方式:获取元素if条件语句变量类型名称类型number数字类型string字符串类型boolean布尔类型undefined未声明/定义类型null空类型object复合类型显示方式:参数描述alter()弹框显示console.log()控制台显示document.ti原创 2018-09-22 09:55:07 · 127 阅读 · 0 评论 -
HTML/CSS常用标签属性及样式
1.常用布局样式:参数描述width宽度height高度background背景颜色border边框padding内边距margin外边距float浮动clear清除浮动2.常用文本样式:参数描述color颜色font-size字体大小font-family字体fon...原创 2018-09-22 09:45:52 · 3589 阅读 · 0 评论 -
HTML/CSS进阶
盒子模型1.margin和padding1个参数指上下左右距离;2个参数指上下,左右;3个参数指上,左右,下;4个参数为上右下左,顺时针方向。2.外间距居中,可用auto。3.盒子真实宽度:width + 左右padding + 左右border;盒子真实高度:height + 上下padding + 上下border。列表1.无序列表:<ul> <li>列...原创 2018-09-22 09:37:42 · 191 阅读 · 0 评论 -
HTML/CSS入门及基础
html标签类型1.块元素:h1-h6:标题标签,1~6依次变小p:段落标签,有默认的外边距div:容器标签,用来包裹其他元素…块元素可以设置宽高,独占一行。2.内联元素(行内元素):a:超链接标签,href=”地址” target=_self跳转页面/_blank打开新页面 titlt=”鼠标移上去时显示的文字”span:内联容器标签,没有其他默认样式img:图片标签,src...原创 2018-09-22 09:26:24 · 167 阅读 · 0 评论 -
jQuery——高级(js对象、json、ajax)
目录js对象jsonajaxjs对象创建js对象的两种方式:1.通过new Object创建:var p1 = new Object();// 设置属性,和方法p1.name = "张三";p1.age = 13;p1.study = function(){console.log(p1.name + "正在学习,葵花宝典");}// 调用属性和方法console.log(...原创 2018-09-27 10:17:54 · 334 阅读 · 0 评论 -
jQuery——进阶(动画、循环、正则、事件冒泡、事件委托、DOM)
目录特殊动画效果单标签操作链式调用循环遍历正则表达式事件冒泡事件委托创建标签dom操作特殊动画效果1.淡入淡出:fadeIn():淡入fadeOut():淡出fadeToggle():切换淡入淡出2.显示隐藏:show():显示hide():隐藏toggle():切换显示隐藏3.下拉收起:slideDown():下拉显示slideUp():收起隐藏slideToggle...原创 2018-09-27 10:03:35 · 211 阅读 · 0 评论 -
Python高级——mini_web框架(实现web框架接口,数据库连接)
mini_web框架http服务器import socketimport multiprocessingimport reimport mini_frameclass Http: def __init__(self): # 初始化属性 self.server_socket = socket.socket(socket.AF_INET,...原创 2018-09-13 12:01:17 · 451 阅读 · 0 评论 -
Python——单元测试
目录1.assert(断言):2.测试类:单元测试: 程序开发过程中,写代码是为了实现需求。当我们的代码通过了编译,只是说明它的语法正确,功能能否实现则不能保证。 因此,当我们的某些功能代码完成后,为了检验其是否满足程序的需求。可以通过编写测试代码,模拟程序运行的过程,检验功能代码是否符合预期。 单元测试就是开发者编写一小段代码,检验目标代码的功能是否符合预期。通常情况下,单元测试主要...原创 2018-10-12 14:03:02 · 1170 阅读 · 0 评论 -
redis数据库及与python交互
目录redis数据操作与python交互使用redis数据操作1.string类型:主要存储字符串操作命令设置键值set key value设置键值与过期时间setex key seconds(单位为秒) value设置多个键met key1 value1 key2 value2 …追加值append key value获取值get k...原创 2018-10-14 08:58:11 · 265 阅读 · 0 评论 -
Django——序列化与反序列化
目录Serializer类序列化反序列化模型类序列化器BookModelSerializerSerializer类1.定义:Django REST framework中的Serializer使用类来定义,须继承rest_framework.serializers.Serializer。例:class BookInfoSerializer(serializers.Serializer):...原创 2018-11-03 11:45:22 · 1136 阅读 · 0 评论 -
REST与RESTful
目录1.rest原则2.关于restful3.请求相关设计方法1.rest原则(1)网络上的所有事物都被抽象为资源(2)每个资源都有一个唯一的资源标识符(3)同一个资源具有多种表现形式(xml,json等)(4)对资源的各种操作不会改变资源标识符(5)所有的操作都是无状态的特点:url简洁,将参数通过url传到服务器,而传统的url比较啰嗦,而且现实中浏览器地址栏会拼接一大串字符...原创 2018-11-01 11:17:25 · 341 阅读 · 0 评论 -
Django框架——中间件
目录1.定义方法2.执行顺序1.定义方法(1)定义一个中间件工厂函数,然后返回一个可以被调用的中间件。(2)中间件工厂函数需要接收一个可以调用的get_response对象。(3)返回的中间件也是一个可以被调用的对象,并且像视图一样需要接收一个request对象参数,返回一个response对象。例:定义:def simple_middleware(get_response): ...原创 2018-11-01 11:01:32 · 230 阅读 · 0 评论 -
Django框架——类视图
目录1.类视图的使用2.类视图装饰器的使用1.类视图的使用继承View类,通过不同的请求方式定义不同的函数。类视图的好处:(1)代码可读性好(2)类视图相对于函数视图有更高的复用性 , 如果其他地方需要用到某个类视图的某个特定逻辑,直接继承该类视图即可例:from django.views.generic import Viewclass RegisterView(View)...原创 2018-11-01 10:55:34 · 227 阅读 · 0 评论 -
Django框架——状态保持(cookie、session)
目录1.cookie2.session1.cookie设置:HttpResponse.set_cookie(cookie名, value=cookie值, max_age=cookie有效期)(max_age单位为秒)读取:request.COOKIES.get(键) (request.COOKIES为字典类型,可使用get获取对应的键值)删除:response.delete_...原创 2018-11-01 10:50:30 · 279 阅读 · 0 评论 -
Django框架——HttpResponse对象
1.HttpResponse可通过HttpResponse构造响应对象:HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)响应头可以直接将HttpResponse对象当做字典进行响应头键值对的设置:response = HttpResponse()response['itcast'] = 'Python' # 自定义...原创 2018-11-01 10:45:22 · 607 阅读 · 0 评论 -
Django框架——HttpRequest对象
目录1.URL路径参数2.QueryDict对象3.查询字符串Query String4.请求体5.请求头6.其他1.URL路径参数(1)位置参数:使用正则分组,与视图中的参数一一对应,不可换位置例:url(r'^(\d+)/(\d+)/$', views.index)def index(request, 参数1, 参数2):...(2)关键字参数:参数位置可以变,与关键字保持一...原创 2018-11-01 10:42:45 · 229 阅读 · 0 评论 -
Django框架——查询集QuerySet
目录1.概念2.两大特性(1)惰性执行:(2)缓存:3.限制查询集1.概念Django的ORM中存在查询集的概念。查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表):方法描述all()返回所有数据。filter()返回满足条件的数据。exclude()返回满足...原创 2018-10-28 11:41:24 · 249 阅读 · 0 评论 -
Django框架——ORM数据库操作
目录一.增加二.删除三.修改四.查询1.基本查询2.过滤查询3.过滤条件语法4.F对象和Q对象5.聚合函数6.排序函数7.关联查询测试数据:BookInfo表PeopleInfo表一.增加1.save:对象 = 模型类(字段名 = 值,字段名 = 值,…)对象.save()例:>>> book = BookInfo(... name...原创 2018-10-28 11:28:39 · 318 阅读 · 0 评论 -
Flask框架——请求钩子与request请求对象
目录请求钩子request对象请求钩子在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如:在请求开始时,建立数据库连接在请求开始时,根据需求进行权限校验在请求结束时,指定数据的交互格式为了让每个视图函数避免编写重复功能的代码,Flask提供了通用设施的功能,即请求钩子。请求钩子是通过装饰器的形式实现,Flask支持如下四种请求钩子:请求钩子描述...原创 2018-10-09 11:44:31 · 433 阅读 · 0 评论 -
Flask框架——路由和视图
目录创建一个简单flask框架程序路由视图函数参数加载方式创建一个简单flask框架程序#1.导入Flask类from flask import Flask#2.创建Flask对象接收一个参数__name__,它会指向程序所在的包app = Flask(__name__)#3.装饰器的作用是将路由映射到视图函数index@app.route('/')def index():...原创 2018-10-08 11:01:37 · 426 阅读 · 0 评论 -
Vue——进阶(过滤器、数据交互、生命周期、ES6语法)
目录过滤器数据交互生命周期函数ES6语法过滤器1.定义过滤器:(1)局部过滤器: new Vue({ el:"#app", filters:{ // 写在vue对象里面的过滤器,是一个局部过滤器 getOuShu:function(array){ ...原创 2018-10-08 10:37:52 · 799 阅读 · 0 评论 -
Vue——基础(对象、属性样式操作、条件、循环、事件、绑定)
目录vue对象vue操作属性vue操作样式三元运算条件渲染循环语句click事件双向绑定数据vue对象1.创建:new Vue({…})2.属性:属性描述el需要管理的区域data用来显示在页面的数据computed计算属性watch监听属性methods方法属性vue操作属性1.格式:v-bind:属性=”data”...原创 2018-10-08 10:28:05 · 2203 阅读 · 0 评论 -
Git——单人操作及多人协同操作
目录1.安装git2.git单人操作3.git多人操作4.标签5.分支1.安装gitsudo apt-get intall git2.git单人操作(1)创建git仓库:git init (2)配置git的提交用户名和邮箱:git config user.name ‘zhangsan’git config user.email ‘123@qq.com’(3)查看文件状态:...原创 2018-10-14 09:05:32 · 1004 阅读 · 0 评论 -
Python高级——魔法属性和方法
魔法属性和方法1.__doc__:表示类的描述信息2.__module__和__class__:当前操作对象所属的模块和类3.__init__:初始化方法,类创建对象时,自动触发执行4.__del__:对象在内存中释放时,自动触发执行5.__call__:对象后加括号(对象()),自动触发执行6.__dict__:类或对象中的所有属性7.__str__:打印对象时,默认...原创 2018-09-13 11:57:36 · 364 阅读 · 0 评论 -
Python高级——property属性
property属性1.property属性: 是一个提高开发者用户体验度的属性,可以将一个函数改造的像属性一样。 例:# 定义的时候像是一个函数 使用的时候和属性的方式是以样的class Foo(object): @property def money(self): return 100# f = Foo()# m = f.money...原创 2018-09-13 11:53:26 · 186 阅读 · 0 评论 -
Python高级——用多线程实现UDP聊天器
思路分析 1.功能:(1)发送消息 (2)接收消息 (3)退出系统 2.架构: (1)发送消息:send_msg() (2)接收消息:recv_msg() (3)主入口:main() 发送消息:(1)用户手动输入信息 (2)将消息编码并发送 接收消息:(1)循环接收消息 (2)解码并显示 主入口:(1)创建套接字,绑定端口 (2)创建一个线程,执行接收消息 (3)选择功...原创 2018-09-06 11:22:16 · 1419 阅读 · 0 评论 -
Python高级——协程
协程协程与线程差异 在实现多任务时, 线程切换从系统层面远不止保存和恢复 CPU上下文这么简单。 操作系统为了程序运行的高效性每个线程都有自己缓存Cache等等数据,操作系统还会帮你做这些数据的恢复操作。 所以线程的切换非常耗性能。但是协程的切换只是单纯的操作CPU的上下文,所以一秒钟切换个上百万次系统都抗的住。 原理 协程是python个中另外一种实现多任务的方式,只不...原创 2018-09-09 11:23:52 · 218 阅读 · 0 评论 -
Python高级——迭代器与生成器
迭代器1.可迭代对象 list、tuple、str等类型的数据使用for…in…的循环语法从其中依次拿到数 据进行使用,我们把这样的过程称为遍历,也叫迭代,可以使用for..in.. 遍历的对象为可迭代对象。 2.检测可迭代对象 可以使用 isinstance() 判断一个对象是否是可迭代对象: 导入模块:f...原创 2018-09-09 10:46:24 · 217 阅读 · 0 评论 -
Python高级——消息队列(Queue)与进程池(Pool)
Queue消息队列1.创建import multiprocessingqueue = multiprocessing.Queue(队列长度)2.方法 方法 描述 put 变量名.put(数据),放入数据(如队列已满,则程序进入阻塞状态,等待队列取出后再放入) put_nowait 变量名.put_nowati(数据),放入数据(如队列已满,则...原创 2018-09-09 10:18:20 · 16179 阅读 · 0 评论 -
Python高级——多进程(multiprocessing)
进程程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元。 ————目录————:进程的状态多进程的基本使用进程名称及pid获取参数传递全局变量守护进程进程的状态就绪态:运行的条件都已经满足,正在等在cpu执行 执行态:cpu正在执行其功能 等待态:等待某些条件满足,例如一个程...原创 2018-09-09 09:43:36 · 792 阅读 · 0 评论 -
Python高级——用多线程实现TCP服务端
需求 1.创建一个TCP服务器接收服务端发送的信息并给予答复 2.以多线程方式实现接收客户端信息 3.间客户端发送的信息解码输出思路分析 1.创建一个TCP客户端套接字 2.写一个接收消息的方法,可以接收客户端消息并解码输出 3.客户端被动监听,每有一个客户端连接就创建一个子线程执行接收消息方法代码实现# 导入模块import socketimport threadin...原创 2018-09-09 08:52:35 · 3873 阅读 · 2 评论 -
Python高级——多线程(threading)
线程 线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。 1.多线程的基本使用 ...原创 2018-09-05 13:55:21 · 362 阅读 · 0 评论