自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ModelViewSet + ModelSerializer使用

1.DRF初始化1.DRF框架的8个核心功能1.认证(用户登录校验用户名密码或者token是否合法)2.权限(根据不同的用户角色,可以操作不同的表)3.限流(限制接口访问速度)4.序列化(返回json)5.分页6.版本(接口版本号,用 v1/v2/v3) # api.example.com/v1/login # 只有用户名密码登录 # api.example.com/v2/login # 手机号,微信 登录7.过滤(username=zhangsan)8.排序(or

2020-12-16 16:00:07 216

原创 阿里云短信服务的使用

申请短信服务,领取免费短信,申请签名和模板封装发短信代码utils/MyBaseView.pyfrom aliyunsdkcore.client import AcsClientfrom aliyunsdkcore.request import CommonRequestdef send_sms(phone,data): client = AcsClient('<ALY_ACCESSKEY_ID>', '<ALY_ACCESSKEY_SECRET>', 'cn-

2020-12-01 16:31:39 402 1

原创 Vue + Element-UI使用

Vue + Element-UI使用安装elementcnpm i element-ui -S在vue当中引入element-ui在main.js中写入以下内容import ElementUI from 'element-ui';import 'element-ui/lib/theme-chalk/index.css';Vue.use(ElementUI);用element布局页面1、使用container布局页面,首页引入导航, Index.vue<template

2020-11-26 16:29:54 1137

原创 Vue封装

封装的意义提高代码的可读性提高代码的可维护性减少代码的书写封装// src/api/http.jsimport axios from 'axios'axios.defaults.baseURL = "http://127.0.0.1:8000/"// axios.defaults.baseURL = "http://172.16.240.175/:8000/"//全局设置⽹络超时axios.defaults.timeout = 10000;//设置请求头信息axios.de

2020-11-25 11:36:14 1204

原创 ModelViewSet全局/局部配置分页,过滤器,限次,排序

全局配置过滤器# 在settings.py中配置全局过滤器REST_FRAMEWORK = { # 过滤器 'DEFAULT_FILTER_BACKENDS': ( 'django_filters.rest_framework.DjangoFilterBackend', 'rest_framework.filters.OrderingFilter'),}局部过滤器# 在views.py中配置局部过滤器from rest_framework.fil

2020-11-23 10:18:59 1398 2

原创 python----七牛云上传图片的简单实现

参考官方接口文档https://developer.qiniu.com/kodo/sdk/1242/python1、安装pip install qiniu2、准备工作注册账号登陆,个人中心获取Access Key 和 Secret Key创建对象存储空间进入空间获取测试域名3、使用python进行上传from qiniu import Auth, put_file# 获取Access Key 和 Secret Key 后,进行初始化对接:q = Auth(access_k.

2021-01-21 15:19:03 223

原创 redis集群搭建

1. 集群的概念集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性。当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上。2. redis集群分类软件层面硬件层面软件层面:只有一台电脑,在这一台电脑上启动了多个redis服务。硬件层面:存在多台实体的电脑,每台电脑上都启动了一个redis或者多个redis服务。3. 搭

2021-01-21 15:18:08 116

原创 mysql主从同步 --- 利用docker实现一主一从

MySQL主从同步1. 主从同步机制1.1 主从同步介绍和优点在多台数据服务器中,分为主服务器和从服务器。一台主服务器对应多台从服务器。主服务器只负责写入数据,从服务器只负责同步主服务器的数据,并让外部程序读取数据。主服务器写入数据后,即刻将写入数据的命令发送给从服务器,从而使得主从数据同步。应用程序可以随机读取某一台从服务器的数据,这样就可以分摊读取数据的压力。当从服务器不能工作时,整个系统将不受影响;当主服务器不能工作时,可以方便地从从服务器选举一台来当主服务器使

2021-01-20 08:30:15 136

原创 django自带模板使用及语法

1 配置在工程中创建模板目录templates。在settings.py配置文件中修改TEMPLATES配置项的DIRS值:TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], # 此处修改 'APP_DIRS': True, 'OPT

2021-01-20 08:28:41 171

原创 django中间件

中间件Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性。我们可以使用中间件,在Django处理视图的不同阶段对输入或输出进行干预。1 中间件的定义方法定义一个中间件工厂函数,然后返回一个可以被调用的中间件。中间件工厂函数需要接收一个可以调用的get_response对象。返回的中间件也是一个可以被调用的对象,并且像视图一样需要接收一个requ

2021-01-20 08:27:41 79

原创 Django--支付宝(沙箱)

django中支付宝(沙箱)简单使用python=3.6.8django=2.1.8python-alipay-sdk=2.0.1非官方支付宝 Python SDK: https://github.com/fzlee/alipay/blob/master/README.zh-hans.md#alipay.trade.page.pay沙箱环境配置1、在支付宝开放平台---->开发者中心—>开发服务---->沙箱2、RSA2密钥生成并上传参考官方地址:https://o

2021-01-15 11:34:24 223

原创 Django实现MySQL读写分离

1. 增加slave数据库的配置DATABASES = { 'default': { # 写(主机) 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'HOST': '192.168.103.158', # 数据库主机 'PORT': 3306, # 数据库端口 'USER': 'itcast', # 数据库用户名 'PASSWORD': '123456', # 数据库用户密

2021-01-15 11:32:46 121 1

原创 Django路径问题

1.django中的三种路径1.1 操作系统文件绝对路径django 静态文件查找, 模板查找(第一种)# 去配置好的 文件夹 中查找指定的文件BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))STATIC_URL = '/static/'# /teach/shiyanlou_project/syl/apps/user/ # linux# E:\_000\XSX1.2 django 导包路径

2021-01-15 11:32:12 102

原创 Django---管理器Manager

管理器Managermodel模型可参考管理器是Django的模型进行数据库操作的接口,Django应用的每个模型类都拥有至少一个管理器。我们在通过模型类的objects属性提供的方法操作数据库时,即是在使用一个管理器对象objects。当没有为模型类定义管理器时,Django会为每一个模型类生成一个名为objects的管理器,它是models.Manager类的对象。自定义管理器我们可以自定义管理器,并应用到我们的模型类上。注意:一旦为模型类指明自定义的过滤器后,Django不再生成默认管理对

2021-01-12 10:20:15 139

原创 django--ORM聚合查询及关联查询

示例模型类from django.db import models#定义图书模型类BookInfoclass BookInfo(models.Model): btitle = models.CharField(max_length=20, verbose_name='名称') bpub_date = models.DateField(verbose_name='发布日期') bread = models.IntegerField(default=0, verbose_name

2021-01-12 10:12:02 127

原创 Django-ORM---查询集介绍

查询集 QuerySet1 概念Django的ORM中存在查询集的概念。查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表):all():返回所有数据。filter():返回满足条件的数据。exclude():返回满足条件之外的数据。order_by():对结果进行排序。对查询集可以再次调用过滤器进行过滤,如BookInfo.objects.filter(bread__gt=30).order_b

2021-01-12 10:09:53 60

原创 Cookie 和 Session

一、CookieCookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。Cookie最早是网景公司的前雇员Lou Montulli在1993年3月的发明。Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。Cookie名称和值可以由服

2021-01-12 10:08:59 55

原创 Django + Uwsgi+Nginx 的生产环境部署

1.django的settings配置nginx负载均衡:https://www.cnblogs.com/xiaonq/p/10468998.htmlhttps://www.cnblogs.com/xiaonq/p/8932266.html# 1.修改配置# 正式上线关闭调试模式, 不会暴露服务器信息DEBUG = True# 2.允许的主机ALLOWED_HOSTS = ['xxx.com','127.0.0.1']# 3.前端修改接口地址(vue)http://192.168.56

2020-12-19 16:51:01 173 3

原创 ModelViewSet更多使用和ModelViewSet源码分析

ModelViewSet更多使用class UsersViewSet(ModelViewSet): # 指定查询集 queryset = models.Users.objects.all() # 指定序列化器 serializer_class = rbac_serializers.UserSerializer def perform_create(self, serializer): serializer.save() req_da

2020-12-18 21:28:52 581 1

原创 配置django跨域

1.配置django跨域1. 安装包pip install django-cors-headers 2. 注册应用INSTALLED_APPS = [ ... 'corsheaders', # 添加 django-cors-headers 使其可以进行 cors 跨域]3. 添加中间件MIDDLEWARE = [ # 放在中间件第一个 'corsheaders.middleware.CorsMiddleware', ...]4. 设置# CO

2020-12-18 21:25:43 107 1

原创 JWT安装配置

1.登录接口2.刷新接口3.自定义返回格式可用地方'''第一:提供三个视图函数'''# obtain_jwt_token = ObtainJSONWebToken.as_view() # 获取token# refresh_jwt_token = RefreshJSONWebToken.as_view() # 刷新token# verify_jwt_token = VerifyJSONWebToken.as_view() # 修改token'''第二:jwt_r

2020-12-18 21:24:10 136 1

原创 JWT原理

1.COOKIE使用和优缺点https://www.cnblogs.com/xiaonq/p/11094480.html1.1 cookie原理:用户名+密码cookie是保存在用户浏览器端,用户名和密码等明文信息1.2 session使用原理session是存储在服务器端的一段字符串,相当于字典的key1.用户向服务器发送用户名和密码。2.验证服务器后,相关数据(如用户角色,登录时间等)将保存在当前会话中。3.服务器向用户返回session_id,session信息都会写入到

2020-12-18 21:21:55 115 1

原创 一大波Model基础操作和一些查询

1.创建表1.1 Meta源信息from django.db import modelsclass UserInfo(models.Model): username = models.CharField(max_length=32) password = models.CharField(max_length=32) class Meta: #1 数据库中生成的表名称 默认 app名称 + 下划线 + 类名

2020-12-18 21:19:32 213 1

原创 APIview+Serializers使用

1.APIview使用ModelViewSet是对APIView封装ModelSerializer是对Serializer1.1 在user/urls.py中添加路由urlpatterns = [ path('apiview/', views.UserInfoViewSet.as_view()),]1.2 创建user/serializers.py写序列化器serializers.ModelSerializer和serializers.Serializer field参数说明

2020-12-17 19:17:31 76

原创 Python --- 线性表、栈、队列、树

"""线性表的定义分类: 一、定义:具有零个或多个数据元素的有限序列 二、特征:第一个元素没有前驱元素 最后一个元素没有后继元素 其它的元素只有一个前驱元素和一个后继元素 三、操作:插入 删除 查找 四、分类: 1、顺序表:存储结构连续 定义:在计算机的内存中 以一组地址连续的存储单元 依次存储数据元素的线性结构 优缺点: 优点:支持随机访问

2020-12-08 19:56:33 258 1

原创 Python正则表达式

import re"""正则表达式match("正则表达式","字符串") 从起始位置开始匹配1、匹配单字符 一个字符 . 匹配任意字符 除了\n [] 匹配[]中列举的字符 \d 匹配数字 0 - 9 \D 匹配非数字 \w 匹配单词字符 0 - 9 a - z A - Z _ \W 匹配非单词字符 \s 匹配空格 \S 匹配非空格 2、匹配多字符 + 匹配前一个字符出.

2020-12-08 19:53:06 160

原创 Python实现迭代器斐波那契、生成器斐波那契、递归斐波那契

迭代器实现class Feibo(): def __init__(self, n): self.n = n self.i = 1 self.j = 1 self.index = 0 def __iter__(self): return self def __next__(self): if self.index < self.n: k = self.i

2020-12-08 19:46:50 164

原创 Python冒泡选择二分递归二分算法

冒泡def func(list_1): for i in range(len(list_1) - 1): for j in range(len(list_1) - 1 - i): if list_1[j] > list_1[j + 1]: list_1[j], list_1[j + 1] = list_1[j + 1], list_1[j] print("冒泡", list_1)func([9, 8, 3,

2020-12-08 19:42:50 169

原创 事务订单(使用事务完成订单功能)

class OrderView(APIView): def post(self, request): uid = request.user.id car_list = request.data.get('id_list') print(car_list) print(uid) # 查询商品信息 car_obj = Car.objects.filter(id__in=car_list)

2020-12-07 19:19:59 752

原创 权限管理 --- RBAC简单实现

1、RBAC模型RBAC模型(Role-Based Access Control:基于角色的访问控制)就是用户通过角色与权限进行关联简单的说,一个用户拥有若干角色,每个角色拥有若干权限这样,就构成了**“用户-角色-权限”**的授权模型在这种模型中,用户与角色之间,角色与权限之间,一般都是多对多关系2、表设计from django.db import modelsfrom django.contrib.auth.models import AbstractUserfrom utils

2020-12-04 20:17:02 278

原创 Django--三方登录/微博登陆

OAuth2.0授权认证oauth2.0是什么?OAuth(开放授权)是⼀个开放标准,允许⽤户让第三⽅应⽤访问该⽤户在某⼀⽹站上存储的私密的资源(如照⽚,视频,联系⼈列表),⽽⽆需将⽤户名和密码提供给第三⽅应⽤。Oauth2.0的四种授权模式?https://www.cnblogs.com/Innocent-of-Dabber/p/11009811.html隐式授权模式(Implicit Grant)授权码授权模式(Authorization code Grant)密码模式(Resourc

2020-12-02 16:20:28 238

原创 项目开发流程

接口文档⼀、什么是接口文档?在项⽬开发中,web项⽬的前后端分离开发,APP开发,需要由前后端⼯程师共同定义接⼝,编写接⼝⽂档,之后⼤家都根据这个接⼝⽂档进⾏开发,到项⽬结束前都要⼀直维护。⼆、为什么要写接口文档?1、项⽬开发过程中前后端⼯程师有⼀个统⼀的⽂件进⾏沟通交流开发2、项⽬维护中或者项⽬⼈员更迭,⽅便后期⼈员查看、维护三、接口规范是什么?⾸先接口分为四部分:方法、url、请求参数、返回参数方法url请求参数返回参数数据字典...

2020-12-01 16:39:10 50

原创 Django-redis缓存及图片验证码生成

图片验证码的生成1.django 缓存设置1.1 安装Django缓存模块pip install django-redis==4.12.11.2 settings.py中配置缓存# 缓存配置CACHES = { # django存缓默认位置,redis 0号库 # default: 连接名称 "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/

2020-12-01 16:22:52 309

原创 Django - Celery使用及介绍

1.Celery介绍1.1 celery应⽤举例Celery 是⼀个 基于python开发的 分布式异步消息任务队列 ,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要⽤到异步任务,就可以考虑使⽤celery你想对100台机器执⾏⼀条批量命令,可能会花很⻓时间 ,但你不想让你的程序等着结果返回,⽽是给你返回 ⼀个任务ID,你过⼀段时间只需要拿着这个任务id就可以拿到任务执⾏结果, 在任务执⾏ing进⾏时,你可以继续做其它的事情Celery 在执⾏任务时需要通过⼀个消息中间件来接收和

2020-12-01 16:04:06 815 1

转载 Python操作Redis

1、redis连接redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量,直接使用。如果需要另一个Redis实例(or Redis数据库)时,就需要重新创建redis连接实例来获取一个新的连接。同理,python的redis没有实现select命令。

2020-11-30 21:34:20 111

原创 Django - 创建虚拟环境

虚拟环境为什么需要虚拟环境:到目前位置,我们所有的第三方包安装都是直接通过pip install xx的方式进行安装的,这样安装会将那个包安装到你的系统级的Python环境中。但是这样有一个问题,就是如果你现在用Django 1.18.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 2.1.x开发的,让你来维护,但是Django 1.18.x不再兼容Django 2.1.x的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有Django 1.18.x和Django 2.1

2020-11-26 16:37:34 946 2

原创 Vue入门

vue的优点:轻量级框架只关注视图层,是一个构建数据的视图集合Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统简单易学国人开发,中文文档,不存在语言障碍,易于理解和学习双向数据绑定vue.js会自动响应数据的变化情况,并且根据用户在代码中预先写好的绑定关系,对所有绑定在一起的数据和视图内容都进行修改。而这种绑定关系,就是以input 标签的v-model属性来声明的,因此你在别的地方可能也会看到有人粗略的称vue.js为声明式渲染的模版引擎。这也就是vue.js最大的优点,通过

2020-11-26 16:27:03 921

原创 django-celery-redis异步发邮件

Django-Celery-Redis异步发邮件python == 3.7.6django == 2.1.8celery == 4.4.7redis == 3.5.3eventlet == 0.26.1什么是celeryCelery是一个功能完备即插即用的任务队列。它使得我们不需要考虑复杂的问题,使用非常简单。celery适用异步处理问题,当发送邮件、或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,这样用户不需要等待很久,提高用户体验。 celery的特点是:简单,

2020-11-26 11:29:42 1053

原创 git使用

# 全局配置git config --global user.name "XXXXXX"git config --global user.email "XXXXX@126.com"注: 安装完成以后,第一次使用时进行配置,以后不需要再进行配置# 空仓库如何操作git init # 初始化一个新的仓库git add . # 添加有改变的文件git add filename(文件名) # 指定文件添加git commit -m '提交说明' # 提交上传的文件,并写入改变说明git remo

2020-11-26 11:26:05 915

原创 多对多增删改查

class ManyToManyTest(APIView): def post(self, request): r_name = request.data.get('r_name') u_name = request.data.get('u_name') if not all([r_name, u_name]): return Response({'code': 400}) # 正向 use

2020-11-24 21:35:34 1183

空空如也

空空如也

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

TA关注的人

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