06 2021 档案

摘要:前言 需求:有这样一个数组[10, 20, 110, 200, 60, 30, 40] 1.筛选出数组中小于100的元素 2.将筛选出的每个元素的值x2 3.完成第2步之后,将数组中的所有元素加起来 普通方法 如果我们还没接触过filter、map、reduce,那么就是用for循环 <script 阅读全文
posted @ 2021-06-30 17:17 Silent丿丶黑羽 阅读(437) 评论(0) 推荐(0)
摘要:购物车案例 经过一系列的学习,我们这里来练习一个购物车的案例 **需求:**使用vue写一个表单页面,页面上有购买的数量,点击按钮+或者-,可以增加或减少购物车的数量,数量最少不得少于0,点击移除按钮,会移除该商品,当把所有的商品移除后,页面上的表单消失,然后出现文字:购物车为空,表单下方是商品的总 阅读全文
posted @ 2021-06-30 10:27 Silent丿丶黑羽 阅读(169) 评论(0) 推荐(0)
摘要:循环 在模板中可以用v-for指令来循环数组,对象等。 循环数组 我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。 <div id="app"> <u 阅读全文
posted @ 2021-06-29 16:51 Silent丿丶黑羽 阅读(168) 评论(0) 推荐(0)
摘要:v-if 在模板中,可以根据条件进行渲染。条件用到的是v-if、v-else-if以及v-else来组合实现的。示例代码如下: <div id="app"> <p v-if="weather == 'sun'">今天去公园玩!</p> <p v-else-if="weather == 'rain'" 阅读全文
posted @ 2021-06-29 10:33 Silent丿丶黑羽 阅读(169) 评论(0) 推荐(1)
摘要:v-on 监听事件 可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。事件代码可以直接放到v-on后面,也可以写成一个函数。示例代码如下: <div id="app"> <p>{{counter}}</p> <button @click="counter += 阅读全文
posted @ 2021-06-28 22:45 Silent丿丶黑羽 阅读(293) 评论(0) 推荐(0)
摘要:1.let命令 基本语法 ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。 { let a = 1 var b = 2 console.log(a) // 在作用域内有效 } console.log(a) // 在作用域外无效,报错: 阅读全文
posted @ 2021-06-28 11:11 Silent丿丶黑羽 阅读(150) 评论(0) 推荐(1)
摘要:前言 一般情况下属性都是放到data中的,但是有些属性可能是需要经过一些逻辑计算后才能得出来,那么我们可以把这类属性变成计算属性。比如以下: <div id="example"> {{ message.split('').reverse().join('') }} </div> 在这个地方,模板不再 阅读全文
posted @ 2021-06-27 21:47 Silent丿丶黑羽 阅读(232) 评论(0) 推荐(0)
摘要:前言 Vue官网一共有提供了14个指令,分别如下 v-text v-html v-show v-if ☆☆☆ v-else ☆☆☆ v-else-if ☆☆☆ v-for ☆☆☆ v-on ☆☆☆ v-bind ☆☆☆ v-model ☆☆☆ v-slot v-pre v-cloak v-once 阅读全文
posted @ 2021-06-27 10:46 Silent丿丶黑羽 阅读(319) 评论(0) 推荐(0)
摘要:编译器代码格式规范设置 通常我们写代码时,代码缩进都是4个空格,但是在前端中,据全球投票统计,建议使用2个空格来进行代码缩进。 首先我们打开webstorm中的设置,如果使用的是mac的同学直接使用command + ,快捷方式,来到Editor-->Code Style-->HTML,将Tab s 阅读全文
posted @ 2021-06-25 06:46 Silent丿丶黑羽 阅读(1149) 评论(0) 推荐(0)
摘要:计数器的实现 在页面上简单实现一个计数器 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="../js/vue.js"></script> </head> 阅读全文
posted @ 2021-06-24 16:47 Silent丿丶黑羽 阅读(214) 评论(0) 推荐(0)
摘要:前言 Vue(读音/vjuː/,类似于view) 是一套用于构建前后端分离的框架。刚开始是由国内优秀选手尤雨溪开发出来的,目前是全球“最”流行的前端框架。使用vue开发网页很简单,并且技术生态环境完善,社区活跃,是前后端找工作必备技能! Vue安装 vue的安装大体上分成三种方式 方式1:CDN引入 阅读全文
posted @ 2021-06-24 15:22 Silent丿丶黑羽 阅读(604) 评论(3) 推荐(3)
摘要:前言 在RESTful规范中,有关版本的问题,用restful规范做开放接口的时候,用户请求API,系统返回数据。但是难免在系统发展的过程中,不可避免的需要添加新的资源,或者修改现有资源。因此,改动升级必不可少,但是,作为平台开发者,应该知道:一旦API开放出去,有人开始用了,平台的任何改动都需要考 阅读全文
posted @ 2021-06-24 06:44 Silent丿丶黑羽 阅读(548) 评论(0) 推荐(0)
摘要:前言 如果需要满足前端各种筛选条件查询,我们使用drf自带的会比较麻烦,比如查询书名中包含“国”字,日期大于“2020-1-1”等等诸如此类的请求,Django-filter这个组件就是要解决这样的问题。 1.安装 Django-filter支持的Python版本和Django版本、DRF版本如下: 阅读全文
posted @ 2021-06-23 06:32 Silent丿丶黑羽 阅读(785) 评论(0) 推荐(0)
摘要:前言 当后台返回的数据过多时,我们就要配置分页器,比如一页最多只能展示10条等等,drf中默认配置了3个分页面 PageNumberPagination:基础分页器,性能略差 LimitOffsetPagination:偏移分页器 CursorPagination:游标分页器,性能强大 PageNu 阅读全文
posted @ 2021-06-22 11:32 Silent丿丶黑羽 阅读(338) 评论(0) 推荐(0)
摘要:前言 当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。 搜索过滤:比如我们想返回sex=1的,那么我们就可以从所有数据中进行筛选 排序过滤:比如我们想对价格进行升序排列,就可以使用排序过滤 搜索过滤 在实际的使用过程中十分简单,只需要在视图类中配置一个全局变量filter_b 阅读全文
posted @ 2021-06-21 11:24 Silent丿丶黑羽 阅读(221) 评论(0) 推荐(0)
摘要:前言 我们使用django创建用户可以使用注册接口的方式,也可以使用django自带的后台管理系统,这里就介绍使用后台管理系统创建用户 admin后台管理系统 在使用之前我们可以使用第三方的插件,来美化我们的后台管理系统,这里推荐simpleui,一个基于Django Admin的现代化主题 安装命 阅读全文
posted @ 2021-06-20 21:41 Silent丿丶黑羽 阅读(357) 评论(0) 推荐(0)
摘要:前言 带着问题学习是最有目的性的,我们先提出以下几个问题,看看通过这篇博客的讲解,能解决问题吗? 什么是JWT? 为什么要用JWT?它有什么优势? JWT的认证流程是怎样的? JWT的工作原理? 我们带着4个问题进入学习 1.什么是JWT? JWT全称Json Web Token,JWT 是一种开发 阅读全文
posted @ 2021-06-20 10:08 Silent丿丶黑羽 阅读(539) 评论(0) 推荐(2)
摘要:前言 有时候我们发送手机验证码,会发现1分钟只能发送1次,这是做了频率限制,限制的时间次数,都由开发者自己决定 频率认证源码分析 def check_throttles(self, request): """ 检查是否应限制请求。如果请求受到限制,则引发适当的异常。 """ throttle_dur 阅读全文
posted @ 2021-06-16 06:42 Silent丿丶黑羽 阅读(228) 评论(0) 推荐(0)
摘要:前言 上一篇我们分析了认证的源码,一个请求认证通过以后,第二步就是查看权限了,drf默认是允许所有用户访问 权限源码分析 源码入口:APIView.py文件下的initial方法下的check_permissions def check_permissions(self, request): """ 阅读全文
posted @ 2021-06-14 10:46 Silent丿丶黑羽 阅读(304) 评论(0) 推荐(0)
摘要:前言 如果我们不用使用drf那套认证规则,我们想自定义认证类,那么我们首先要知道,drf本身是如何定义认证规则的,也就是要查看它的源码是如何写的 源码分析 源码的入口在APIView.py文件下的dispatch方法下的self.initial方法中的self.perform_authenticat 阅读全文
posted @ 2021-06-13 14:22 Silent丿丶黑羽 阅读(268) 评论(0) 推荐(0)
摘要:认证组件源码入口 APIView下的dispatch下的self.initial(request, *args, **kwargs),源码如下: def initial(self, request, *args, **kwargs): """ 在调用方法处理程序之前运行任何需要发生的事情 """ # 阅读全文
posted @ 2021-06-11 17:16 Silent丿丶黑羽 阅读(91) 评论(0) 推荐(0)
摘要:前言 Django为我们提供了内置的User模型,不需要我们再额外定义用户模型,建立用户体系了。它的完整的路径是在django.contrib.auth.models.User。 User模型源码分析 class User(AbstractUser): """ Django 身份验证系统中的用户由该 阅读全文
posted @ 2021-06-11 16:23 Silent丿丶黑羽 阅读(478) 评论(0) 推荐(0)
摘要:验证和授权概述 Django有一个内置的授权系统。他用来处理用户、分组、权限以及基于cookie的会话系统。Django的授权系统包括验证和授权两个部分。验证是验证这个用户是否是他声称的人(比如用户名和密码验证,角色验证),授权是给与他相应的权限。Django内置的权限系统包括以下方面: 用户。 权 阅读全文
posted @ 2021-06-11 06:37 Silent丿丶黑羽 阅读(160) 评论(0) 推荐(0)
摘要:前言 ViewSet 只是一种基于类的视图,它不提供任何方法处理程序(如 .get()或.post()),而是提供诸如.list()和 .create() 之类的操作。 ViewSet 的方法处理程序仅使用 .as_view() 方法绑定到完成视图的相应操作。 通常不是在urlconf中的视图集中显 阅读全文
posted @ 2021-06-10 16:57 Silent丿丶黑羽 阅读(989) 评论(0) 推荐(0)
摘要:前言 上篇我们通过mixin可以非常方便的实现一些CURD操作。实际上针对这些mixin,DRF还进一步的进行了封装,放到generics下。有以下generic类视图: generics.ListAPIView:实现获取列表的。 generics.CreateAPIView:实现创建数据的。 ge 阅读全文
posted @ 2021-06-10 11:32 Silent丿丶黑羽 阅读(157) 评论(0) 推荐(0)
摘要:前言 mixins翻译成中文是混入,组件的意思。在DRF中,针对获取列表,检索,创建等操作,都有相应的mixin,一般我们自定义创建的类视图都会继承自GenericAPIView和Mixins一起使用 mixins工具集 mixins.py文件中有5个类,分别是 CreateModelMixin:类 阅读全文
posted @ 2021-06-10 09:13 Silent丿丶黑羽 阅读(451) 评论(1) 推荐(0)
摘要:源码分析 GenericAPIView继承自APIView,也就是在APIView基础上再做了一层封装,源码如下: class GenericAPIView(views.APIView): queryset = None serializer_class = None lookup_field = 阅读全文
posted @ 2021-06-09 17:13 Silent丿丶黑羽 阅读(358) 评论(0) 推荐(1)
摘要:视图家族 drf的视图总共分为以下4个,对应4个源码文件 views:视图类 generics:工具视图 mixins:视图工具集 viewsets:视图集 学习曲线 我们学习视图,可以按照以下的曲线来学习 APIView:在views源码文件下面,继承自View,前面我们已经分析过源码了 Gene 阅读全文
posted @ 2021-06-09 13:43 Silent丿丶黑羽 阅读(92) 评论(0) 推荐(0)
摘要:前言 有时候我们使用drf的Response,会发现默认返回的格式不太友好,每次我们都需要写入以下的格式 return Response({ "status": 0, "message": "成功", "results": serializer.data }) 这样会非常麻烦,我们想默认就有stat 阅读全文
posted @ 2021-06-09 11:37 Silent丿丶黑羽 阅读(216) 评论(0) 推荐(0)
摘要:APIView视图类 在DRF中,推荐使用类视图,因为类视图可以通过继承的方式把一些重复性的工作抽取出来,而使得代码更加简洁。当然如果你不想使用类视图,那么就用@api_view装饰器包裹一下就可以。 关于视图的逻辑,一共有10个 单查、群查 单增、群增 单删、群删 单全局改、单局部改 群全局改、群 阅读全文
posted @ 2021-06-09 11:11 Silent丿丶黑羽 阅读(241) 评论(0) 推荐(0)
摘要:前言 渲染模块的原理和解析模块是一样,drf默认的渲染有2种方式,一种是json格式,另一种是模板方式。 渲染模块源码入口 入口:APIView类中dispatch方法中的:self.response = self.finalize_response(request, response, *args 阅读全文
posted @ 2021-06-08 14:38 Silent丿丶黑羽 阅读(197) 评论(0) 推荐(1)
摘要:异常模块源码入口 APIView类中dispatch方法中的:response = self.handle_exception(exc) 源码分析 我们点击handle_exception跳转,查看该方法源码 def handle_exception(self, exc): """ Handle a 阅读全文
posted @ 2021-06-08 13:33 Silent丿丶黑羽 阅读(83) 评论(0) 推荐(0)
摘要:前言 上一篇分析了请求模块的源码,如下: def initialize_request(self, request, *args, **kwargs): """ Returns the initial request object. """ parser_context = self.get_par 阅读全文
posted @ 2021-06-08 06:06 Silent丿丶黑羽 阅读(241) 评论(0) 推荐(0)
摘要:前言 APIView中的dispatch是整个请求生命过程的核心方法,包含了请求模块,权限验证,异常模块和响应模块,我们先来介绍请求模块 请求模块:request对象 源码入口 APIView类中dispatch方法中的:request=self.iniialize_request(*args, * 阅读全文
posted @ 2021-06-07 21:14 Silent丿丶黑羽 阅读(227) 评论(0) 推荐(0)
摘要:前言 一般我们写完序列化以后,我们就会开始写视图了,drf中我们一般使用CBV的方式,也就是类视图的方式,最基础的我们会使用from rest_framework.views import APIView,APIView继承自View,关于视图的详解,我们后续再细讲。本章介绍drf的请求生命周期 前 阅读全文
posted @ 2021-06-07 13:53 Silent丿丶黑羽 阅读(257) 评论(0) 推荐(1)
摘要:前言 我们上篇文章使用到了Serializer类,可能有小伙伴说太过复杂,那么本篇就为大家带来更加简便的序列化类ModelSerializer ModelSerializer 先来看下ModelSerializer的代码结构如下: 可以看到ModelSerializer是继承自Serializer, 阅读全文
posted @ 2021-06-06 10:23 Silent丿丶黑羽 阅读(303) 评论(0) 推荐(0)
摘要:前言 上一篇文章我们讲述了序列化,这篇就带大家一起来实现以下序列化 Serializer 我们使用序列化类Serializer,我们来看下源码结构,这里推荐使用pycharm左边导航栏的Structure,可以清晰的看到一个文件的结构,如下图 我们会发现Serializer继承自BaseSerial 阅读全文
posted @ 2021-06-04 21:24 Silent丿丶黑羽 阅读(436) 评论(0) 推荐(0)
摘要:序列化与反序列化 一般后端数据返回给前端的数据格式都是json格式,简单易懂,但是我们使用的语言本身并不是json格式,像我们使用的Python如果直接返回给前端,前端用的javascript语言是识别不出的,所以我们需要把python语言转换为通用的json格式的数据,在django中就是将orm 阅读全文
posted @ 2021-06-04 15:06 Silent丿丶黑羽 阅读(275) 评论(0) 推荐(0)
摘要:restful接口规范 什么是接口规范?接口规范就是为了采用不同的后台语言,也能使用同样的接口获取到同样的数据。如何写接口:接口规范是规范化书写接口的,写接口要写url、响应数据 ​ 注:如果将请求参数也纳入考量范围,那就是在写接口文档 url restful接口的url规范,遵循以下6个规范 1. 阅读全文
posted @ 2021-06-03 13:21 Silent丿丶黑羽 阅读(474) 评论(0) 推荐(0)
摘要:DRF介绍 DRF是Django Rest Framework单词的简写,是在Django框架中实现Restful API的一个插件,使用他可以非常方便的实现接口数据的返回。Django中也可以使用JsonResponse直接返回json格式的数据,但是DRF相比直接使用Django返回json数据 阅读全文
posted @ 2021-06-03 10:48 Silent丿丶黑羽 阅读(280) 评论(0) 推荐(0)
摘要:celery介绍 Celery是由Python开发、简单、灵活、可靠的分布式任务队列,是一个处理异步任务的框架,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务。Celery侧重于实时操作,但对调度支持也很好,其每天可以处理数以百万计的任务。特点: 简单:熟悉celery的工作 阅读全文
posted @ 2021-06-02 21:43 Silent丿丶黑羽 阅读(1334) 评论(0) 推荐(1)
摘要:前言 环境celery==5.0.2 在安装完celery后,运行celery会报以下错误 ModuleNotFoundError: No module named 'click._bashcomplete' 解决方案 报错原因是说click模块中没有._bashcomplete,经过查阅资料后发现 阅读全文
posted @ 2021-06-01 13:52 Silent丿丶黑羽 阅读(800) 评论(2) 推荐(0)
摘要:前言 动态网站的基本权衡是,它们是动态的。每次用户请求页面时,Web服务器都会进行各种计算 - 从数据库查询到模板呈现再到业务逻辑 - 以创建站点访问者看到的页面。从处理开销的角度来看,这比标准的文件读取文件系统服务器要耗时多了。对于大多数Web应用程序来说,这种开销并不是什么大问题。因为大多数We 阅读全文
posted @ 2021-06-01 06:53 Silent丿丶黑羽 阅读(859) 评论(0) 推荐(0)