- 博客(45)
- 收藏
- 关注
原创 安装docker时遇到的错误与docker一些简单指令
1.安装docker Desktop时遇到的错误1.1安装Docker Desktop报错:WSL 2 installation is incomplete解决:https://blog.csdn.net/qq_39611230/article/details/1086258401.2先使用 管理员方式执行命令 netsh winsock reset在windows 10 中 如果 安装了 Android 模拟器的话,会导致 docker 环境冲突在控制面板中的程序里的启动或关闭window
2020-10-26 17:15:47
535
原创 创建订单并生成支付宝支付链接接口
1.1 goods/urls.py中注册路由rom django.urls import pathfrom . import viewsurlpatterns = [ path('getpayurl/', views.PayUrlView.as_view()),]1.2 goods/views.py 中写视图函数from decimal import Decimalfrom rest_framework.permissions import AllowAny, IsAuthenti
2020-10-15 20:33:28
4335
原创 支付宝支付原理以及测试接口获取支付url
测试生成支付链接from alipay import AliPay# 沙箱环境中 app 私钥app_private_key_string = open('app_private_key.txt').read()# 支付宝公钥alipay_public_key_string = open('alipay_public_key.txt').read()def get_alipay_url(): # 实例化一个alipay对象 alipay = AliPay( .
2020-10-15 20:25:02
6260
4
原创 七牛云上传视频
在oauth/view.py下class Qntoken(APIView): def get(self,request): from qiniu import Auth # 需要填写你的 Access Key 和 Secret Key access_key = '9CMf1rHY4g7TW_lJqlJAJEz8iERb2_RnOq76q9Qz' secret_key = 'CsWBfVP1eRZ_wFlCS1VmUodcTgNUt8w
2020-10-14 21:33:59
394
原创 增加media文件配置
在setting.py文件下配MEDIA_URL='/media/'MEDIA_ROOT=os.path.join(BASE_DIR,'media')在项目/url.py文件下配置from django.contrib import adminfrom django.urls import path,includefrom django.conf.urls.static import staticfrom syl import settingsurlpatterns = [ pa
2020-10-13 07:19:23
182
原创 序列化正向查询和反向查询
from rest_framework import serializersfrom users.models import UserInfoclass UserInfoSerializer(serializers.Serializer): name = serializers.CharField(min_length=3,max_length=20) # 显示普通字段 ut = serializers.CharField(source='ut.type_n
2020-10-12 21:33:31
666
原创 django配置Base基类
class Base(models.Model): create_time=models.DateTimeField(auto_now_add=True,verbose_name="创建时间") update_time=models.DateTimeField(auto_now=True,verbose_name="更新时间") class Meta: abstract = True
2020-10-12 21:20:55
340
原创 6.vue微博回调空页面
1.1 页面路径 components\oauth.vue<template> <div> <div v-show='visiable'> 绑定用户 用户名: <input type="text" v-model="username" @blur="check_username" > <span>{{username_message}}</span> 密码: <input type="
2020-10-09 19:29:29
90
原创 5.微博绑定用户接口
1.1 oauth/urls.py 中添加路由urlpatterns = [ path('weibo/binduser/', views.OauthWeiboBindUser.as_view()), # /oauth/weibo/callback/ ]1.2 oauth/views.py 中添加试图函数class OauthWeiboBindUser(APIView): permission_classes = (AllowAny,) def post(self,request)
2020-10-09 19:07:06
163
原创 4.vue微博回调空页面
注:微博回调空页面为: http://127.0.0.1:8888/oauth/callback/1.1 页面路径 components\oauth.vue<template> <div> <p>跳转中....</p> </div> </template><script> import { oauth_callback_post } from './axios_api/api' mounted(){
2020-10-09 18:48:13
112
原创 3.微博回调接口
1.1 oauth/urls.py 中添加路由urlpatterns = [ path('weibo/callback/', views.OauthWeiboCallback.as_view()), # /oauth/weibo/callback/ ]1.2 oauth/views.py 中添加试图函数class OauthWeiboCallback(APIView): # 自定义权限类 permission_classes = (AllowAny,) def post(
2020-10-09 18:40:37
162
原创 2.在Vue页面加载时动态发送请求获取微博授 权url
1.1 在 components\common\lab_header.vue 中写oauth动态获取微 博授权URL// 获取微博登录地址 oauth() { // 从后端获取 微博登录地址 oauth_post().then((resp) => { console.log(resp) //{'code': '0', 'msg': '成功', 'data': {'url': url}} let url = resp.data.url; this.weibo_url = url;
2020-10-09 18:38:26
295
原创 1.获取微博授权URL接口
1.创建apps/oauth模块进行oauth认证'''2.1 在apps文件夹下新建应用: oauth''' cd syl/apps python ../manage.py startapp oauth # 切换到apps文件夹下执行创建命令 '''2.2 添加子路由: oauth/urls.py''' from django.urls import path from . import views urlpatterns = [ ]''' 2.3 在syl/settings.py
2020-10-09 18:34:03
1103
原创 微博开发者账号注册
1.注册账号进入首页。创建网站接入的应用: https://open.weibo.com/选择立即接入,进入到创建应用页面创建应用基本信息页面: https://open.weibo.com/apps/3516473472/info/advanced高级信息页面2.接口文档查看接口文档https://open.weibo.com/wiki/授权机制说明...
2020-10-09 17:17:35
990
原创 微博第三方登录原理讲解
1.微博三方登录流程https://api.weibo.com/oauth2/authorize?client_id=4122644977&response_type=code&state=study&forcelogin=true&redirect_uri=https%3A%2F%2Fstudy.163.com%2Fsns%2Fweibo%2FoAuthCallback.htm%3FoauthType%3Dlogin%26returnUrl%3DaHR0cH
2020-10-09 17:12:23
436
原创 01.celery原理与组件
1.Celery介绍https://www.cnblogs.com/xiaonq/p/11166235.html#i11.1 celery应用举例Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执
2020-10-08 11:04:25
121
原创 redis的pipeline
1.1 redis发送数据原理Redis是建立在TCP协议基础上的CS架构,客户端client对redis server采取请求响应的方式交互。一般来说客户端从提交请求到得到服务器相应,需要传送两个tcp报文。设想这样的一个场景,你要批量的执行一系列redis命令,例如执行100次get key,这时你要向redis请求100次+获取响应100次。如果能一次性将100个请求提交给redis server,执行完成之后批量的获取相应,只需要向redis请求1次,然后批量执行完命令,一次性结果,性能是
2020-10-08 10:58:38
93
原创 后端注册接口
1.完善注册接口1.1 修改user/views.py中完善视图函数# 注册接口class RegisterView(APIView): """ 用户注册, 权限是: 匿名用户可访问 """ # 自定义权限类 permission_classes = (AllowAny,) def post(self, request): """ 接收用户名,密码,手机号和验证码, 前端校验两遍一致性, 注册成功后返回成功, 然后用户自
2020-10-07 16:40:27
437
原创 手机号短信验证码接口
1.1 注册账号https://www.yuntongxun.com/user/login1.2 登录即可看到开发者账号信息1.3 添加测试账号2.使用容联云发送代码测试'''1. 安装容联云sdk''' pip install ronglian_sms_sdk # 免费测试文档地址:https://doc.yuntongxun.com/p/5a531a353b8496dd00dcdfe2'''2. 短信发送代码''' # libs/rl_sms.pyfrom ronglian_sm
2020-10-07 16:36:47
2563
原创 图片验证码配置
1.2 syl/settings.py 中配置缓存# 缓存配置CACHES = { # django存缓默认位置,redis 0号库 # default: 连接名称 "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.c
2020-10-07 08:23:28
128
原创 Jwt安装配置
1.登录接口2.刷新接口3.自定义返回格式1.JWT安装配置1.1 安装JWTpip install djangorestframework-jwt==1.11.01.2 syl/settings.py 配置jwt载荷中的有效期设置# jwt载荷中的有效期设置JWT_AUTH = { # 1.token前缀:headers中 Authorization 值的前缀 'JWT_AUTH_HEADER_PREFIX': 'JWT', # 2.token有效期:一天有效
2020-10-07 08:21:29
621
原创 JWT原理
1.COOKIE使用和优缺点1.1cookie原理:用户名+密码cookie是保存在用户浏览器端,用户名和密码等明文信息[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ih22Tmey-1602028256132)(C:\Users\Lucky\Pictures\Camera Roll\jwt.png)]1.2 session使用原理session是存储在服务器端的一段字符串,相当于字典的key[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接
2020-10-07 07:51:24
126
原创 git add . 如果遇到这样的错误warning: LF will be replaced by CRLF in src/components/common/lab_header.vue. Th
windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示输入git config --global core.autocrlf falsegit commit -m’****’git push 远程仓库地址 master
2020-10-07 07:50:03
351
原创 jwt的结构
1.jwt头:JWT头部分是一个描述JWT元数据的JSON对象2.有效载荷:七个默认字段+自定义私有字段3.签名=HMACSHA256( base64UrlEncode(header) + “.” + base64UrlEncode(payload) ,secret)
2020-10-06 07:33:28
216
原创 JWT特点分析
1、JWT的最大缺点是服务器不保存会话状态,所以在使用期间不可能取消令牌或更改令牌的权限,一旦JWT签发,在有效期内将会一直有效。2、JWT本身包含认证信息,因此一旦信息泄露,任何人都可以获得令牌的所有权限。3、为了减少盗用和窃取,JWT不建议使用HTTP协议来传输代码,而是使用加密的HTTPS协议进行传输。4、JWT不仅可用于认证,还可用于信息交换,善用JWT有助于减少服务器请求数据库的次数...
2020-10-06 07:24:06
542
原创 modelviewset实现增删改查
class GoodsList(viewsets.ModelViewSet): """ list: 商品列表 read: 商品详情 create: 增加商品 update: 更改商品 partial_update: 部分更改商品 delete: 删除商品 """#1.认证:自定义认证类,自定义类会覆盖全局配置 #authentication
2020-09-29 20:39:33
1927
原创 封装axios
const axios=require('axios'); //创建axios对象axios.defaults.baseURL='http://192.168.56.100:8888'; //vue请求后端地址axios.defaults.timeout=1000; //多久超时axios.defaults.withCredentials= true; //携带cookie需要添加/** * 设置请求传递数据的格式(看服务器要求的格式)
2020-09-29 07:12:41
272
原创 RESTful风格
1.1什么是RESTful?REST与技术无关,代表的是一种软件架构风格(REST是Representational State Transfer的简称,中文翻译为“表征状态转移”) REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资源架构(ROA: Resourc
2020-09-28 17:21:31
99
原创 Serializer的功能
创建user/serializers.py写序列化器class UserInfoSerializer(serializers.Serializer): id = serializers.CharField(read_only=True) # 普通字段,设置id为只读字段,不能修改 username = serializers.CharField(min_length=3,max_length=20 ,error_messages= {'required': '该字段必填'}) # 显示
2020-09-28 17:11:41
465
原创 serializers.ModelSerializer 和 serializers.Serializer field参数说明
field参数1.read_only read_only=True 表示不允许用户自己上传,只能用于api的输出,序列化的时候也不用对这个数据进行验 证,序列化返回是有改字段2.write_only write_only=True 表示在更新或创建实例时可以使用该字段,但在序列化返回时不包括该字段。3.required:该字段是必需的,不能为空 required=True 反序列化(前端返回数据必须包含此字段)的时候必须提供这个字段 设置False 可以 不提供4.allow_null/allow_
2020-09-28 17:05:25
1149
原创 Apiview+Serializers使用
1.APIview使用ModelVIewSet 是对 APIView 封装在这里插入代码片ModelSerializer 是对 Serializer封装1.1 在 user/urls.py 中添加路由urlpatterns = [ path('apiview/', views.UserInfoViewSet.as_view()), ]1.2 创建user/serializers.py写序列化器serializers.ModelSerializer 和 serializers.Serialize
2020-09-28 16:57:56
121
原创 modelviewset序列化限流排序
url配置from django.urls import path,includefrom apps.app01 import viewsfrom rest_framework.routers import SimpleRouter, DefaultRouter#自动生成路由方法,必须使用视图集#router=SimpleRouter() #没有跟路由 /user/ 无法识别router=DefaultRouter() #有跟路由router.register(r'user',vi
2020-09-28 16:39:49
141
原创 django基础
1.1django生命周期1.2django的介绍目的:了解Django框架的作用和特点 作用:简便、快速的开发数据库驱动的网站Django的优势快速开发MVT功能齐全Django学习版本: 1.11.11 思考:用django还是flask开发数据驱动web网站(复杂业务逻辑)数据分析后的结果展示界面, flask快速成型应用上线, 就用django1.3Django设计模式(MVC/MTV)目的: 了解什么是MVC, MTV思考: 为什么要用设计模式分工、解耦,让不同的
2020-09-25 16:54:19
136
原创 二分查找
# 二分查找(折半查找)的前提:必须有序def find(l,a): n=len(l) start=0 end=n-1 while start<=end: mid=(start+end)//2 if a==l[mid]: return mid elif a>l[mid]: start=mid+1 else: end=mid-1
2020-09-16 09:31:13
94
原创 冒泡排序
alist=[54,26,93,17,77,31,44]l=len(alist)for j in range(1,l): for i in range(0,l-j): if alist[i]<alist[i+1]: alist[i],alist[i+1]=alist[i+1],alist[i]print(alist)
2020-09-16 09:29:21
107
原创 bs4语法
节点选择器from bs4 import BeautifulSoupsoup = BeautifulSoup(res.text,'lxml')tag = soup.a #取a标签,只取一个方法选择器方法选择器find_all(name,attrs,text,limit): soup.findall(name='***') #根据节点名字定位 soup.findall(attrs={'属性名(scr,class等)':'值'})#根据属性定位,多个属性时,一个即可定位
2020-09-10 20:13:32
744
原创 PhantomJS下载及配置环境变量
下载, 直接解压: https://phantomjs.org/download.html将解压文件的bin目录添加至环境变量from selenium import webdriverbrowser = webdriver.PhantomJS()browser.get('https://www.baidu.com/')with open('baidu_phantomjs.html', 'w', encoding="utf-8") as f: f.write(browser.page_.
2020-09-09 13:44:14
604
原创 selenium安装,配置,操作
selenium安装安装:1.Chrome浏览器2.selenium框架:pip install selenium3.驱动程序:下载http://npm.taobao.org/mirrors/chromedriver/查看浏览器版本选择对应的版本 编码流程: #首先需要将下载的chromedriver.exe放到代码文件夹下 #导包 from selenium import webdriver #调用chromedriver.exe
2020-09-09 10:51:27
267
原创 动态数据加载
网页HTML上,有些数据是通过JS代码填充,所以如果直接使用爬虫,只会爬取到一个标签,并没有其中的元素。requests模块和scrapy框架在发起请求爬取数据的过程中,不能执行JS代码。seleniumselenium是一个web端自动化测试框架,可以通过代码来控制浏览器,比如打开关闭,点击等行为。作用:帮助抓取动态加载的数据,避免反爬...
2020-09-09 09:34:21
211
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人