目录 基于django中间件拷贝思想 跨站请求伪造简介 跨站请求伪造解决思路 方式1:form表单发post请求解决方法 方式2:ajax发post请求解决方法 csrf相关的两个装饰器 csrf装饰器在CBV上的特例 django settings源码 auth模块简介 auth创建用户 auth扩展表 基于django settings配置文件实现插拔式设计 csrf:Cross Site Request Forgery protection 基于django中间件拷贝思想 # start.…
目录 一.模拟实现中间件的编程思想 (一)impotlib模块 (二)实现功能的配置使用 二.跨站请求伪造CSRF (一)由来 (二)form表单的CSRF (三)ajax中的CSRF (1)通过data携带 (2)通过headers携带 (3)官网提供的文件(推荐用法) (四)CSRF相关的装饰器 (1)MTV模型中使用 (2)CBV模型中使用 三.Django中auth模块 (一)什么是auth模块 (二)常用方法 (1)创建用户 (2)校验用户 (3)登录保存 (4)是否登录 (5)检验密…
FBV与CBV 视图函数并不只是指函数,也可以是类 FBV:基于函数的视图,类似面向函数式编程 CBV:基于类的视图,类似面向对象编程 研究解析render源码: render:返回html页面:并且能够给该页面传值 分析:FBV视图原理 from django.shortcuts import render,HttpResponse # Create your views here. from django.template import Template,Context # FBV解析 de…
目录 一.跨站请求伪造(csrf) 1. 什么是csrf 2. 钓鱼网站原理 3. 如何解决csrf (1)思路: (2)实现方法 (3)实现的具体代码 3. csrf相关的装饰器 (1)csrf_protect装饰器 (2)csrf_exempt装饰器 二.django的settings源码剖析 1. 模仿django的settings源码设计自定义settings 三.django的auth模块 1. 使用终端如何创建超级用户: 2. auth模块常用方法 (1)创建用户 (2)校验用户名和…
目录 使用Django对中间件的调用思想完成自己的功能 功能要求 importlib模块介绍 功能的实现 csrf中间件详细介绍 跨站请求伪造 Django csrf中间件 form表单 ajax csrf相关装饰器 在CBV上加csrf装饰器 Django settings源码剖析及模仿使用 Django settings源码剖析 查看内部配置文件 模仿使用 Auth模块 auth简介 auth模块常用方法 创建用户 校验用户名和密码 保存用户登录状态 判断当前用户是否登录 校验原密码 修改密…
目录 importlib模块 csrf跨站请求伪造 form表单发送 ajax发送 csrf装饰器 auth模块 如何创建超级用户(root) 创建用户 校验用户名和密码是否正确 保存用户登录状态 判断当前用户是否登录 校验原密码是否正确 修改密码 注销 校验用户是否登录 装饰器 如何扩展auth_user表字段 settings源码分析 importlib模块 使用 将需要导入的文件路径 放入 import_module() 里面 即可拿到该路径对应的文件 但是 只能识别到文件 不能识别到文件…
目录 今日内容 昨日回顾 基于配置文件的编程思想 importlib模块 简单代码实现 跨站请求伪造csrf 1. 钓鱼网站 如何实现 模拟该现象的产生 2. 解决问题 解决 {% csrf_token %} 3. ajax如何解决 方式1 方式2 方式3 4. csrf相关的两个装饰器 1. 使用 2. 两个装饰器在CBV上的异同 django里settings源码剖析 django有两个配置文件 django auth模块 1. 是什么 2. 常用方法 2.1 创建用户 create_use…
Django 用户认证(auth模块) 一.认证登陆 在进行用户登陆验证的时候,如果是自己写代码,就必须要先查询数据库,看用户输入的用户名是否存在于数据库中:如果用户存在于数据库中,然后再验证用户输入的密码,这样一来就需要自己编写大量的代码.实际上,Django已经提供了内置的用户认证功能.在使用"python manage.py makemigrations"和"python manage.py migrate"迁移完成数据库之后,根据配置文件"sett…
[Django高级之Auth模块] auth模块 ←详情点击查看 1.Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的终极框架,当然也会想到用户的这些痛点.它内置了强大的用户认证系统–auth,它默认使用 auth_user 表来存储用户数据. 1 django提供的用户认证,创建,修…
Django settings 源码 """ 1.django其实有两个配置文件 一个是暴露给用户可以自定义的配置文件 项目根目录下的settings.py 一个是项目默认的配置文件 当用户不做任何配置的时候自动加载默认配置 2.配置文件变量名必须是大写 """ from django.conf import global_settings 查看源码 global_settings.py LANGUAGE_CODE = 'en-us' ('zh-…
Django其实有两个配置文件,一个是暴露给用户的可以自定义的配置,一个是项目默认的配置,用户如果配置了就用用户的,没有配置就用默认的. 首先需要在settings文件中导入,然后查看settings源码 from django.conf import global_settings,settings 点进去LazySettings我们会发现它是一个类,所以settings是类实例化出来的对象,这里利用了单例模式. 然后我们点入manage.py文件中看到 最后点入Settings类…
Django settings源码 Django中有两个配置文件 局部配置:配置文件settings.py,即项目同名文件夹下的settings.py文件 全局配置:django内部全局的配置文件settings.py,需要导入才能看到 from django.conf import settings # 是一个对象,单例模式 from django.conf import global_settings # 真正的默认配置文件 特点: 先加载全局配置,再加载局部配置,以局部优先 源码解析 点进…
python附录-builtins.py模块str类源码 str官方文档链接:https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str builtins.py class str(object): """ str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str Create a new stri…
单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 说实话很不想写这篇文章,因为这和我一贯推崇的最好全部编译并使用webrtc音频处理模块相悖.可是不知不觉已经把降噪和增益写出来,回声消除如果用户可以得到完美利用也不失为一个很好的方法.但是还是那句话,最好还是全部编译和使用webrtc的整个音频处理模块.另外这篇文章已经不单单的回声消除模块了,其中包括了降噪,增益,静音检测,如果有需要可以选择其中的一部分单独提取…
单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件) webrtc的音频处理模块分为降噪ns,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到回声消除等较为复杂的模块时,最好使用全部的音频处理模块二不要单独编译其中一部分以免浪费宝贵的时间. 但是音频降噪部分较为简单,用起来也就几个函数,除了需要传入的音频数据…
webrtc的音频处理模块分为降噪ns和nsx,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到回声消除等较为复杂的模块时,最好使用全部的音频处理模块,不要单独编译其中一部分以免浪费宝贵的时间. 但是音频降噪,增益功能较为简单,还能直接使用.这部分源码是我从webrtc中抠出来,单独放到VS2010工程下使用.其中包括重采样以及滤波,降噪功能.这部分是直接复用之前的博文单独使用webrtc降噪…
socketserver模块使用与源码分析 前言 在前面的学习中我们其实已经可以通过socket模块来建立我们的服务端,并且还介绍了关于TCP协议的粘包问题.但是还有一个非常大的问题就是我们所编写的Server端是不支持并发性服务的,在我们之前的代码中只能加入一个通信循环来进行排队式的单窗口一对一服务.那么这一篇文章将主要介绍如何使用socketserver模块来建立具有并发性的Server端. 基于TCP协议的socketserver服务端 我们先看它的一段代码,对照代码来看功能. #!/us…
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 这一篇笔者主要以设计的角度探索jQuery的源代码,很多人说jQuery设计过于个人主义话,其实这样说是有一定偏见的,因为好的设计是可通用的.共通的,jQuery这么好用,我们怎么能说他的设计是个人主义呢?记得以前有人吐槽mvvm设计剑走偏锋,导致代码难以维护,不过前几年从mvvm火爆程度来看,另类绝不是不好.好了,开始正题. 提问:jQuery…
[从源码学设计]蚂蚁金服SOFARegistry之程序基本架构 0x00 摘要 之前我们通过三篇文章初步分析了 MetaServer 的基本架构,MetaServer 这三篇文章为我们接下来的工作做了坚实的铺垫. 本系列我们接着分析 Data Server,顺带会涉及一些 Session Server.因为 DataServer 和 MetaServer 代码实现和架构的基本套路类似,所以我们主要关心差异点和DataServer的特点. 本文会分析DataServer程序的基本架构. 0x01…
[从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 目录 [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 0x00 摘要 0x01 业务领域 1.1 SOFARegistry 总体架构 1.2 应用场景 1.2.1 单元化状态 1.2.2 内网通讯 1.2.3 Http协议 1.3 问题点 1.4 解决方案 1.5 阿里方案 1.6 实现问题 1.7 总述 0x02 基础封装 2.1 Channel 2.1.1 Java Channel 2.1.2 SOFA Ch…
[从源码学设计]蚂蚁金服SOFARegistry网络操作之连接管理 目录 [从源码学设计]蚂蚁金服SOFARegistry网络操作之连接管理 0x00 摘要 0x01 业务领域 1.1 应用场景 0x02 管理内容 2.1 连接管理 2.2 管理内容 0x03 Connection管理 3.1 Connection对象 3.2 Connection类定义 3.3 ConnectionFactory 3.4 MetaServerConnectionFactory 3.5 DataServerCon…
[从源码学设计]蚂蚁金服SOFARegistry之消息总线异步处理 目录 [从源码学设计]蚂蚁金服SOFARegistry之消息总线异步处理 0x00 摘要 0x01 为何分离 0x02 业务领域 2.1 应用场景 2.2 延迟和归并 2.2.1 业务特点 2.2.2 问题 2.2.3 解决 2.3 蚂蚁金服实现 0x03 DataChangeEventCenter 3.1 总述 3.2 DataChangeEventCenter 3.2.1 定义 3.2.2 消息类型 3.2.3 初始化 3.…
[从源码学设计]蚂蚁金服SOFARegistry之存储结构 目录 [从源码学设计]蚂蚁金服SOFARegistry之存储结构 0x00 摘要 0x01 业务范畴 1.1 缓存 1.2 DataServer 分片机制 1.3 服务模型 1.3.1 服务发布模型(PublisherRegister) 1.3.2 服务订阅模型(SubscriberRegister) 1.3.3 dataInfoId 1.3.4 版本号 0x02 基本概念 2.1 物理机房DataCenter 2.2 Server节点…
[从源码学设计]蚂蚁金服SOFARegistry之推拉模型 目录 [从源码学设计]蚂蚁金服SOFARegistry之推拉模型 0x00 摘要 0x01 相关概念 1.1 推模型和拉模型 1.1.1 推模型: 特点: 优点: 缺点: 1.1.2 拉模型 特点: 优点: 缺点: 1.2 Guava LoadingCache 0x02 业务领域 2.1 应用场景 2.2 问题点 2.3 解决方案 2.4 阿里方案 2.4.1 各种模型应用 2.4.2 推拉模型 0x03 拉模型 in Session…
[从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 0x00 摘要 0x01 业务范畴 1.1 MetaServer的重要性 1.2 推拉模型 1.3 分析策略 0x02 目录结构 0x03 Bean 0x04 Raft协议 0x05 消息处理 5.1 MetaServerChangeEvent 5.2 消息来源 5.2.1 启动 5.2.2 定时 5.2.3 推送…
[从源码学设计]蚂蚁金服SOFARegistry之服务上线 目录 [从源码学设计]蚂蚁金服SOFARegistry之服务上线 0x00 摘要 0x01 业务领域 1.1 应用场景 1.1.1 服务发布 1.1.2 SessionServer的必要性 1.2 问题点 1.3 阿里方案 1.3.1 注册过程 1.3.2 图示 0x02 Client SDK 0x03 Session server 3.1 Bean 3.2 入口 3.3 策略 3.3.1 目录结构 3.3.2 DefaultPubli…
[从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 0x00 摘要 0x01 业务范畴 1.1 概述 1.2 数据变化 0x02 数据结构 2.1 接口定义 2.2 派生类 2.3 Bean 0x03 流程 3.1 放入消息 3.1.1 PublishDataHandler 3.1.2 DataChangeEventCenter 3.2 消费消息&发送通知 3.2.1 Dat…
[从源码学设计]蚂蚁金服SOFARegistry之续约和驱逐 目录 [从源码学设计]蚂蚁金服SOFARegistry之续约和驱逐 0x00 摘要 0x01 业务范畴 1.1 失效剔除 1.2 服务续约 0x02 DatumLeaseManager 2.1 定义 2.2 续约 2.2.1 数据结构 2.2.2 调用 2.2.3 续约 2.2.4 图示 2.3 驱逐 2.3.1 数据结构 2.3.2 显式调用 2.3.3 启动调用 2.3.4 驱逐 2.3.5 驱逐处理业务 2.3.5.1 转发驱逐…
[从源码学设计] Flume 之 memory channel 目录 [从源码学设计] Flume 之 memory channel 0x00 摘要 0x01 业务范畴 1.1 用途和特点 1.2 Channel 1.3 研究重点 1.4 实际能够学到什么 1.5 总述 0x02 定义 2.1 接口 2.2 配置参数 2.2.1 channel属性 2.4 Semaphore和Queue 2.5 MemoryTransaction 0x03 使用 3.1 channel如何使用 3.2 sour…
[从源码学设计]蚂蚁金服SOFARegistry之消息总线 目录 [从源码学设计]蚂蚁金服SOFARegistry之消息总线 0x00 摘要 0x01 相关概念 1.1 事件驱动模型 1.1.1 概念 1.1.2 应用环境 1.2 消息总线 0x02 业务领域 2.1 业务范畴 2.2 问题点 2.3 解决方案 0x03 EventCenter 3.1 目录结构 3.2 类定义 3.2.1 操作 3.2.2 执行 & 解耦 3.2.3 Listener列表 3.2.4 ArrayListMult…