个人学习
陈大憨
小小程序员
展开
-
Django-rq任务失败自动重试
Django-rq任务失败后自动重试原创 2022-08-10 09:43:36 · 475 阅读 · 1 评论 -
基于Django的通用审核模块
文章目录前言一、基础代码1.模型层2.Serializers层3.ViewSet层一、使用步骤前言一般来说,管理系统都会有审核功能,即:普通用户发起申请,拥有审核权限的管理员审核申请的功能。为了避免重复造轮子,设计了一个通用的审核模块,适用于大部分场景。提示:以下是本篇文章正文内容,下面案例可供参考一、基础代码1.模型层通用模型代码如下:# -*- coding: utf-8 -*-import uuidimport loggingfrom django.conf import原创 2022-04-10 16:09:00 · 2279 阅读 · 0 评论 -
django-guardian基础教程一
文章目录前言一、django-guardian是什么?二、使用步骤1.安装2.配置总结前言Django默认提供的权限控制是基于模型级的,但是如果一个系统对于权限的控制比较复杂,模型级的权限控制是不满足需求的。django-guardian弥补了Django的权限控制的不足,它是基于对象级的权限控制,可能把权限控制得更加细致,从而应对复杂的系统。一、django-guardian是什么?Django默认提供的权限控制方式是基于模型级,而django-guardian提供了对象级的权限控制。二、原创 2022-03-05 14:42:51 · 1671 阅读 · 1 评论 -
基于Django+DRF实现长链接转短链接
1. 主要框架:Django == 3.2djangorestframework == 3.12.42. 实现思路:通过进制转换,把10进制转为62进制,能大大缩短字符串的长度;原创 2022-01-22 14:19:50 · 1139 阅读 · 1 评论 -
Mysql数据库增量式备份
需求:一般比较大型的项目,它的数据库的数据量可能高达几十G以上,如果每天都需要进行备份,就会消耗很大的磁盘空间,对于一些很少机会再使用的数据,可以不用每天都备份,一周备份一次就好。思路:既然标题说增量式备份,那就肯定不会直接mysqldump简单导出整个数据库,首先,把备份分成两种备份模式:完整备份和增量备份。完整备份:一周只备份一次,只备份要增量备份的那些数据表增量备份:每天都备份一次,这里比较复杂,下面详细说下面举一个例子,让大家更好地理解:假设有一个数据库叫OA,它有4个数据原创 2021-11-30 17:28:11 · 1321 阅读 · 0 评论 -
Django关于日期查询失效修复
在使用Django的ORM对数据进行查询时,查询是用到日期__date、__gte等失效,是由于Mysql设置导致的,执行下面语句就可以修复:mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql原创 2021-09-26 13:49:22 · 302 阅读 · 0 评论 -
Ubuntu20.4 搭建OnlyOffice文档服务器
1.安装Dockersudo apt updatesudo apt install docker.iodocker --version安装OnlyOffice文档服务器sudo docker run -i -t -d -p 80:80 --restart=always onlyoffice/documentserver-deps:可以自定义服务器的端口,用自己开放的端口号替换<PORT_NUMBER>部分。sudo docker run -i -t -d -p <PORT原创 2021-09-17 17:51:55 · 3284 阅读 · 0 评论 -
python 按行处理大文件
一般我们读取文件,都是直接把文件的内容读取到内存中,然后再对其进行处理,但是如果文件很大,例如几个G甚至几百G,这时候使用读取到内存的方式就不行了,会直接导致内存溢出而卡机,这种情况,python中的yield就很好用,下面举个简单的例子,几行代码很好理解。def read_file(file_path): with open(file_path, 'r') as file: for line in file: yield lineif __n原创 2021-07-08 14:01:04 · 484 阅读 · 0 评论 -
基于Django项目的增量式备份
备份# -*- coding: utf-8 -*-import loggingimport jsonimport osimport requestsimport datetimeimport reimport subprocessfrom django.conf import settingsfrom yz_lib.utils.qi_niu import QiNiufrom yz_lib.utils.others import sha1_filefrom django.db impo原创 2021-02-24 17:01:02 · 369 阅读 · 0 评论 -
selenium处理多个iframe的情况
需求/难题:在使用selenium框架的时候。如果遇到那种嵌套多个iframe的页面,会导致无法定位到想要的元素。解决办法: chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--ignore-certificate-errors') chrome_options.add_argument('--no-sandbox') chrome_options.add_argument原创 2020-11-20 10:23:00 · 1476 阅读 · 1 评论 -
python PDF加水印/公章
1.开发思路:先把pdf转化为图片,再把图片进行合并或者叠加,最后把图片转化为pdf。2.代码:# -*- coding: utf-8 -*-import fitzimport osfrom django.conf import settingsfrom PIL import Image as pilImage__author__ = 'JayChen'class ProcessPDF: def __init__(self, pdf_path, pdf_name, pdf_o原创 2020-10-16 14:44:48 · 2542 阅读 · 1 评论 -
Django项目使用NGINX通过LDAP实现用户验证
关于利用Nginx实现Ldap统一认证,官方也给出了相关的文档和相应的示例代码。本文章是结合Django框架和简化认证过程。1. 安装Nginx中相应的模块实现Ldap登录主要用到Nginx的http_auth_request_module模块,旧版本的Nginx默认是不安装,可以通过命令行:nginx -V 检查一下是否有安装,没安装的自行百度安装。2. 实现原理建议大家先看两遍官方的博客,熟悉一下认证的过程。本文是简化实现的过程。首先从Nginx的配置文件入手,搞清楚配置文件到底什么意思。原创 2020-09-22 14:42:35 · 632 阅读 · 0 评论 -
Django实现微信小程序支付
1.下载相关的库微信官方已经提供了方便开发者的SDK,可是使用pip方式下载: pip install wechatpy2. 在项目的settings.py文件添加相关配置具体的参数需要自己到小程序微信公众平台和微信商户平台获取。WECHAT = { 'APPID': 'appid', # 小程序ID 'APPSECRET': 'appsecret', # 小程序SECRET 'MCH_原创 2020-09-02 14:25:07 · 1921 阅读 · 0 评论 -
Django aggregates简单用法。
利用Django的ORM框架实现数据库的聚合查询。1. 简单建一张数据表:class StatTable(models.Model): keyword = models.CharField(max_length=255, default=None) ranking = models.IntegerField(default=0) class Meta: db_table = 'stat_table'2. 简单介绍一下aggregates:Sum:求和C原创 2020-08-04 15:55:30 · 877 阅读 · 0 评论 -
supervisor中使用虚拟环境
如果还没有虚拟环境,首先自己创建虚拟环境,可以参考:python中virtualenvwrapper虚拟环境的安装和使用在自己项目的根目录下新建一个.conf文件,文件名自己取:mkdir supervisor.conf编辑文件:vim supervisor.conf[program:stat_table]command=/home/jay/.virtualenvs/Mproject_env/bin/python3 manage.py runscript stat_ranking --traceb原创 2020-08-03 16:40:19 · 1846 阅读 · 0 评论 -
gitlab上加速运行Django项目测试代码
项目环境:python 3.6Django 1.11Coverage 5.0减少测试代码运行时间的方法:把单一的管道改为多管道并行,最后合并测试结果减少数据库迁移的次数具体做法:1、把测试代码拆分成四部分,分别放在不同的文件夹配置文件.gitlab.yml参考:stages: - test - resultPart_one: stage: test...原创 2020-03-09 11:52:47 · 230 阅读 · 0 评论 -
Django使用django_apscheduler定时任务
在写这篇文章之前,我已经查阅了网上大部分的资料,包括官方的文档,但是还是没有解决我遇到的问题,现在还不容易解决了问题,特意记录一下。问题:任务无法启动。完整教程:安装第三方库:pip install django-apscheduler在settings.py文件的INSTALLED_APPS中加入:INSTALLED_APPS = [ '...' 'django_apsche...原创 2020-02-05 20:05:29 · 2777 阅读 · 9 评论 -
Django请求流程图
转载 2019-12-27 13:52:21 · 716 阅读 · 0 评论 -
python 中cls和self的区别
self:指的是一个具体实例的本身。如果在class中的某个方法加了@classmethod修饰器,那么这个方法不需要实例化也能直接被其他程序调用。cls:表示这个类本身。...原创 2019-12-27 13:48:56 · 855 阅读 · 0 评论 -
python内置函数issubclass()介绍
issubclass():格式:issubclass(object, subobject)object:子类;subobject:父类;作用:用于判断object是否为subobject的子类,如果是,返回True,否则返回False例子:class A: passclass B(A): pass print(issubclass(B,A)) #...原创 2019-12-26 17:44:31 · 265 阅读 · 0 评论 -
python的getattr()方法介绍
getattr():作用:返回一个对象的属性值。定义:getattr(object, name, default)object: 一个实例化的对象;name:这个实例化对象的属性名;default:默认值,当对象取不到属性值的时候,就会返回默认值,如果没有设置默认值,会报错 AttributeError。下面是菜鸟教程的例子:>>>class A(object)...原创 2019-12-26 00:53:22 · 805 阅读 · 0 评论 -
@property的基本使用
@property的作用:广泛用于类的定义中,把方法变成属性,保证对参数进行必要的检查,减少程序运行时出错的可能性。例子:class Student(object): @property def score(self): return self._score @score.setter def score(self, value): ...原创 2019-12-17 14:48:34 · 4857 阅读 · 0 评论 -
Client持久化的坑
Client.get()和Client.post()都会自动做持久化处理,在发送请求时,必须设置follow=True举个例子:def test_get(self):url = “/shop/”# 在用户没有登陆的情况下访问失败,返回302状态码response = self.client.get(url)self.assertEqual(response.status_code, s...原创 2019-12-16 09:05:06 · 130 阅读 · 0 评论 -
lambda的基本使用
语法:lambda argument_list:expression特性:lambda函数是匿名的;lambda函数有输入和输出;例子:lambda x,y:x∗yx,y:x∗y;函数输入是xx和yy,输出是它们的积x∗yx∗ylambda:None;函数没有输入参数,输出是Nonelambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性...转载 2019-11-21 10:48:51 · 219 阅读 · 0 评论 -
python hasattr()方法的使用
描述:用于判断对象是否包含对应的属性。语法:hasattr(object, name)参数:object:–对象。name:–属性名字。返回值:如果对象中有这个属性,就返回True,否则返回False。实例:class Dog: name = Tomdog = Dog()print(dog, 'name')print(dog, 'age')输出结果:True...转载 2019-11-18 09:51:56 · 158 阅读 · 0 评论 -
Django单元测试
编写测试的流程:引入django提供的测试模块,例如TestCase;引入需要测试的类或者方法;自己构造一个单元测试的类,并且这个类要继承django提供的测试模板;def setUp(self): 测试前的准备工作,例如创建对象、连接数据库等;编写功能测试,例如我要测试homepage_view这个功能,那么我就要以test_开头定义一个方法,例如def test_homepage...原创 2019-11-13 11:42:03 · 102 阅读 · 0 评论 -
Django项目中使用JWT
1.requiremwnts:Django版本:2.2python版本:3.6djangorestframework版本:3.1djangorestframework-jwt版本:1.11MySQL版本:5.7注意:使用Django 2.1以上的版本,MySQL数据库必须在5.5以上的版本。2.新建项目1)使用pycharm新建一个Django项目,我的项目名称叫:django_j...原创 2019-11-03 17:01:06 · 784 阅读 · 1 评论 -
解决跨域问题
什么是跨域:当我们在前端项目通过网络请求从后端项目获取数据时,后端显示访问正常,没有任何报错,而在前端却收不到数据,还会出现报错。什么情况下会出现跨域问题:同一域名,不同端口;同一域名,不同协议;同一域名,不同子域;不同域名。前后端端项目数据交换过程(产生跨域问题情况):在前后端分离项目中,当我们在浏览器端输入网址时,浏览器会先向前端项目发送数据请求,然后前端项目向浏览器返回数...原创 2019-11-02 02:14:33 · 101 阅读 · 0 评论 -
python集合增加数据的操作方法
add():作用:增加一个数据到集合。集合的特点:数据是没有顺序的;数据不会重复;例子:s1 = {10,20,30}s1.add(40)print(s1)输出结果:{40, 10, 20, 30}update():作用:把序列增加到集合。例子:s1 = {10,20,30}s1.update([10,20,50])print(s1)输出结果:{10,...原创 2019-10-30 00:15:41 · 4173 阅读 · 0 评论 -
数据库封锁的概念
封锁机制中锁有两种:排他锁共享锁排他锁:如果事务T对某个对象加了排他锁,则系统只允许事务T对这个数据对象进行读取和更新,其他事务·都不能对这个数据对象加任何锁,直到事务T释放这个数据对象上的排他锁。共享锁:若事务T对某个对象加了共享锁,则系统只允许事务T对这个数据进行读取但不能更新,其他事务也能对这个数据对象加共享锁,而不能加排他锁,直到事务T释放共享锁。封锁机制的作用:解决丢...原创 2019-10-29 22:57:39 · 2477 阅读 · 0 评论 -
python3修改list
reverse():作用:把列表的所有元素的顺序倒转语法:列表.reverse()例子:my_list = ['a', 'b', 'c', 'd']my_list.reverse()print(my_list)输出结果:['d', 'c', 'b', 'a']sort():作用:排序,默认是升序语法:列表.sort()例子:my_list = ['a', 'c...原创 2019-10-27 14:44:11 · 313 阅读 · 0 评论 -
python3列表的删除操作
del:作用:删除指定的列表或者指定下标的列表的数据语法:del 列表名例子:list_test = ['xiaoming', 'xiaohong', 'xiaogang']list_test2 = ['a','b', 'c']del list_test2[0]del list_testprint(list_test2)print(list_test)输出结果:['b'...原创 2019-10-27 14:14:24 · 337 阅读 · 0 评论 -
python列表相关操作
insert():作用:在列表指定的位置插入数据。语法:列表.insert(位置下标,数据)例子:my_list = ['a', 'b', 'c']my_list.insert(2,'d')print(my_list)输出结果;['a', 'b', 'd', 'c']append():作用:列表结尾追加数据。语法:列表.append(数据)例子:my_list...原创 2019-10-27 01:29:13 · 86 阅读 · 0 评论 -
python字符串常用的方法
find():检测某个字串是否包含在这个字符串中,如果包含在其中,则返回要查找的字串的第一个字符的下标,如果字串不包含在字符串中,则返回-1字符串.find(‘需要查找的字串’, ‘查找开始的下标’,‘查找结束的下标’)查找开始的下标的默认值是0,可以不写;查找结束的下标的默认值是字符串的长度-1,可以不写。举个例子:a = 'abcdefg'b = a.find('bcd')...原创 2019-10-24 00:19:47 · 144 阅读 · 0 评论 -
python 三目运算符
规则:条件通过执行的语句 if 条件语句 else 条件不成立执行的语句a = 5b = 10c = a if a<b else bprint(c)结果:5原创 2019-10-23 20:49:48 · 78 阅读 · 0 评论 -
django rest_framework的简单使用
Django版本:django 2.0python版本:python 3.6首先新建一个Django项目,例如我创建的项目名称是:djangoRestful接着新建一个app,我新建的app叫:restful修改settings.py:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', ...原创 2019-10-23 01:21:15 · 287 阅读 · 0 评论 -
python对列表进行排序
ls = [2,3,5,6,4,2,2,3,8]ls.sort()print(ls)python标准库的sort()方法可以对列表进行排序,排序会改变原来的列表,如果想要不改变原来的列表,那就用sorted()方法。...原创 2019-10-20 20:02:33 · 835 阅读 · 0 评论 -
python list列表去除重复数据
ls = [2,3,6,5,5,6,6,7]ls = set(ls)ls = list(ls)print(ls)原理:数组是一个无序的不重复的序列,所以我们可以先把列表转化数组,然后再转化回列表,这样就能实现列表去重的需求。...原创 2019-10-20 19:57:31 · 1525 阅读 · 0 评论 -
bootstrap4基础——组件上篇
学习笔记:Alert提示组件:原创 2019-09-21 00:25:17 · 689 阅读 · 0 评论 -
bootstrap4基础——组件下篇
Collapse切换内容:在<button>或者<a>标签里面添加两个属性:data-toggle:data-toggle=“collapse”,表示这个地方可以切换东西;data-target:data-target="#collapse-demo",表示切换到的目标地址;Dropdown下拉菜单:在<button>或者<a>标签里面...原创 2019-09-23 19:47:32 · 233 阅读 · 0 评论