![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 86
Fei-Huang
国内一家家喻户晓的大型互联网公司,从事IT基础设施架构工作。
展开
-
Django- 6 -学校后台管理系统-老师管理(模态对话框元素移动)
文章目录列出所有老师一个老师多教一个班列出老师和教的所有班级鼠标放到班级上再一个叉,这个时候再删除这个班级第二种实现思路如果后端传了个字典,那前端也可以进行for循环列出所有老师可以先忽略m加一些才师一个老师多教一个班列出老师和教的所有班级利用many-to-mant的字段进行获取但是这种方式不好,因为数据库访问的次数会非常多,最好一次拿出来,然后先缓存起来。使用前端来循环获取这个括号 不需要拿到了queryset,这个时候就可以for循环了鼠标放到班级上再一原创 2022-06-06 21:59:23 · 911 阅读 · 1 评论 -
Django-5 -自定义分页
页码展示范围内的内容原创 2022-05-17 14:33:02 · 722 阅读 · 0 评论 -
Django - 3 - 班级管理后台页面
下面是scripts继承每个子菜单的设置学生列表老师列表现在在哪个菜单下,哪个菜单就是单独的颜色。动态的选中现在在用的菜单模板已经引用jquery所以,这里不用再引入了如果点了别的页面后,页面自动刷新,所以不用设置移除...原创 2022-05-16 17:29:21 · 920 阅读 · 0 评论 -
Django-1-后台管理-cookies
Django 关于cookie的实验登陆与注册判断是否登陆设置cookies这个神奇的地方在客户端电脑上,谁来访问就在谁电脑上,在用户的浏览器上从数据库拿数据(用户名密码)...原创 2022-05-14 16:23:40 · 335 阅读 · 0 评论 -
Python Basic - Daemon 守护线程
不同位置的join()setDaemon(True)将线程声明为守护线程,必需在start()方法调用之前设置,如果不设置为守护线程程序会被无限挂起。这个方法基本和join是相反的。当我们在程序运行中,执行一个主线程,如果主线程又创建了一个子线程,主线程和子线程就分兵两路,分别运行,那么当主线程完成后想退出时,会检验子线程是否完成,如果子线程未完成,则主线程会等待子线程完成后再退出。但是有时候我们需要的是只要主线程完成 了,不管子线程是否完成,都要和主线程一起退出,这时就可以用setDaemon方法。而原创 2021-01-21 16:25:26 · 185 阅读 · 1 评论 -
Python Basic - GIL:global interpreter lock(全局解释器锁)
GIL:global interpreter lock(全局解释器锁)CPython implementation detail : in CPython,due to the Global Interpreter Lock,only one thread can execute Python code at one(even through certain performance-oriented libraries might overcom this limitation), If you want原创 2021-01-15 10:15:12 · 120 阅读 · 1 评论 -
Python Basic - 线程进程
创建线程,需要用到创建线程的模块3条线程在同时执行,主线程,两条子线程这人方法用于结束后程序就直接结束,不再继续往下跑了。一个线程就是一堆指令集一个进程内可以有一个或者多个线程。这是一个串行的执行过程。并发的状态这成绩好像是一样的。这个结果是,串行比并行的更快,因为同样是执行任务,中间没有阻塞,所以串行是不需要切换时间的。所以CPU密集型:大量需要CPU计算的IO密集型:需要大量IO但是对CPU要求不高。...原创 2021-01-15 10:12:18 · 90 阅读 · 0 评论 -
Python Basic - socketserver
socketserver是一个模块。聊天模式原创 2021-01-12 15:42:15 · 171 阅读 · 0 评论 -
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd2 in position 422: invalid continuation byte
socket编程中,使用"utf8"编码会遇到以上错误,遇到此问题可改成“gbk”编码格式,注意在socket编程中,发要改,收也要改。原创 2020-10-02 09:18:43 · 755 阅读 · 0 评论 -
Python Basic - socket编程中相关“编码”问题
文章目录前言编码数据类型转换(str()/bytes()方法)数据类型转换二(内置方法)解码:解码方法一(str()/bytes())解码方法二(内置方法)前言在python 3里面只有两种数据类型,一种是str,一种是bytes。str这种数据类型,存unicode编码的。也叫万国码。bytes存的是以16进制的形式存储的二进制数据bytes这种数据类型是通过16进制来表示的。其实是二进制的数据,便于计算机进行处理与传输。编码将str转换为bytes–>这个过程叫编码bytes数据类原创 2020-10-01 19:50:02 · 199 阅读 · 0 评论 -
Python Basic - socket通信-解决“粘包”问题
前言在Python Basic - 远程执行命令优化示例(循环接收直至接收完成)示例中,还存在一个bug,就是,服务端连接两次使用了sendall() 方法进行发送数据。两次连续send,执行的速度非常快,所以在短时间内多次发送这个问题需要解决。发送数据时,对端需要在recv的状态,如果对端不在这个状态时会两面错误 ,这个问题被称为“粘包”,而对于接收者来说,因为recv是阻塞的,所以对于接收者来说,不会出现“粘包”现象。解决“粘包”问题发送一次数据后,等待一秒后再发送第二次服务器端代码while原创 2020-10-01 19:28:36 · 148 阅读 · 0 评论 -
Python Basic - 远程执行命令优化示例(循环接收直至接收完成)
视频6:多等1S钟,这样可以避免多次发送数据错误去除粘包现象。两次连续send,执行的速度非常快,所以在短时间内多次发送这个问题需要解决。解决粘包现象多收一次,对端多发一次因为recv会阻塞,所以不会有粘包的问题。视频七:编码在py3里面只有两种数据类型,一种是str,一种是bytes。str这种数据类型,存unicode编码的。也叫万国码。bytes存的是16进制。有字符,有汉字,在内存中都是unicode码,没有国家区分数据类型是str,但是编码是unicod...原创 2020-10-01 19:11:20 · 397 阅读 · 0 评论 -
Python Basic -Socket编程远程执行命令后将结果返回请求者
视频五:传送命令对方执行客户端不用怎么改。server端这一部分也不用怎么换这些也不用改这个时候,data就是client传送过来的命令。==============================================这个模块需要去了解一下。默认情况下,结果会直接展示到屏幕上来,但是这个结果是通过一个子进程的方式进行运行的,所以我们需要将这个子进程运行的消息提到主进程进进行展示,所以将期封装进入到对象中,通过特定的方法进行调用。通过stdout进行调用方法。但是输出为原创 2020-09-26 20:15:52 · 248 阅读 · 0 评论 -
Python Basic - subprocess模块,让python在主机上执行相应的shell命令
文章目录简介主要的方法run()方法示例一:Popen接口(subprocess的核心)Popen的介绍示例一:创建一个子进程,然后执行一个简单的命令示例运行并结果输出Popen的子方法subprocess.PIPE简介subprocess 是一个允许python在主机上运行一个子进程,该子进程可以去与该计算机通过 == “输入” “输出”“错误输出”“管道” ==等与计算机进行交互,并将此子进程获取的命令执行的返回值返回给主进程。总结一句话就是,子进去去执行命令,然后将结果返回给主进程进行进一步的处理原创 2020-09-25 17:20:18 · 328 阅读 · 0 评论 -
Python Basic - Socket编程-不同主机间交互
family=AF_INNET 是ipv4下面的参数 ,用于不同主机之间的通信family=AF_INNET6 是ipv6下面的参数 ,用于不同主机之间的通信family=AF_UNIX 在unix上不同的里程之间进行通信时使用。linux本地的socket文件。type=SOCK_STREAM / SOCK_Dgram 流式(对于建立TCP连接的时候) 数据式(对于建立UDP连接)type=SOCK_ROW这两个参数都有默认值,所以在写socket.socket() ...原创 2020-09-25 15:09:54 · 721 阅读 · 0 评论 -
Python Basic - 单例模式
文章目录实例单例模式的例,就是这个例。第一次循环跟第二次循环执行的是不一样的。但是从第二次开始就一直使用第一次创建的。这样可以一直使用这个模式。一模一样的,这样通过类方法 可以只创建一次。...原创 2020-09-08 10:08:32 · 146 阅读 · 0 评论 -
Python Basic -反射 getattr()、setattr()、delattr()、hasattr()
文章目录一个新的知识点getattr()hasattr()setattr()delattr()一个新的知识点getattr()拿到了这个对象,但是只是对象。hasattr()表示是否有某个属性用于判断对象里是否有某个东西。setattr()设置某个属性delattr()删除某个属性。这就是,通过字符串的形式操作对象中的成员。咱们能不能直接去类里面直接去找成员?也适用于直接找类中的成员,因为类也是一个对象。s2 定义两个全局变量,然后导入到s1,然后访问。导入原创 2020-09-07 11:35:50 · 134 阅读 · 0 评论 -
Python Basic - 异常(try....except.....else....finally)处理,assert 断言
异常处理如果出错了,不让程序报错,而做一个什么特殊的处理这是一个固定写法如果出错了,会创建一个Exception的对象,这个对象就是e,对象中封装了错误信息,可以拿出来错误信息。错误的种类:每一种错误都有一种对象来表示错误的各类Exception是最高的父类,其它的像indexError,ValueError这些都是Exception的子类还有其它更多的错误种类。可以定义多种类型还有一个else:如果不出错的话会执行else:正常代码出错了,就执行上面的,出错了就except里面原创 2020-09-03 17:25:57 · 291 阅读 · 0 评论 -
Python Basic -面向对象终极-metaclass、创建类,创建对象的过程,__new__()方法的基本原理,__call__()方法
特殊成员循环可迭代对象所以循环根本不是循环这个对象,而是特iter方法的返回值。如果是一个可迭代对象,那就先执行这个可迭代对象的iter方法,获取迭代器metaclass,类的祖宗Foo 是类名,object是继承的这个类,func是成员类型,object是一个超级的类,所有的类都会继承这个object的类,你不写他也继承。自定义祖宗类:默认情况下,创建类的时候会通过type这个类来创建,但是如果想自定义的话,则需要使用到metaclass来指定,告诉他不要通过type来创建了。原创 2020-09-03 11:23:36 · 445 阅读 · 0 评论 -
Python Basic - 特殊方法-__iter__() 方法实现循环可迭代对象的实现
文章目录循环可迭代对象的实质在类里面加__iter__()方法小结循环可迭代对象的实质class Foo: def __init__(self,name,age): self.name = name self.age = ageobj = Foo("Elon Musk",38)for i in obj: print(i)"""Traceback (most recent call last): File "E:/Python/Pycharm原创 2020-09-01 16:12:38 · 258 阅读 · 0 评论 -
Python Basic - 特殊方法-使用__getitem__()进行slice 列表切片的原理
文章目录回顾列表切片回顾列表切片listslice = [1,2,3,4,5,6,7,8,9,0]print(listslice[1])print(listslice[2:6])print(listslice[2:6:2])"""2[3, 4, 5, 6][3, 5]"""如上所示,列表中的数据可以通过下标的方式进行查找,列表切片在python3还是使用的getitem方法,所以在getitem方法里面还需要其它处理。要通过什么判断呢?在只有一个数字的时候是整型,但是如果是由原创 2020-09-01 15:31:21 · 392 阅读 · 0 评论 -
Python Basic - 特殊方法-(__delitem__())删除某个索引所对应的值
__delitem__(self,key)class Foo: def __init__(self,name,age): self.name = name self.age = age def __setitem__(self, key, value): print(key,value) def __delitem__(self, key): print(key)obj = Foo("Steve Jobs",40)原创 2020-09-01 11:25:36 · 561 阅读 · 0 评论 -
Python Basic - 特殊方法-(__setitem__()) “设置某个值
__setitem__(self,key,value)class Foo: def __init__(self,name,age): self.name = name self.age = age def __setitem__(self, key, value): print(key,value)obj = Foo("Steve Jobs",40)obj[100] = "Elon Musk""""100 Elon Musk"""原创 2020-08-31 18:01:43 · 160 阅读 · 0 评论 -
Python Basic - 特殊方法-(__getitem__())像查列表一样查找相应的元素,或者传递相应的值,自动执行的方法
__getitem__(self,item)创建列表的时候,也是调用的类里的一个方法,而查值,赋值,删值这都有特定的方法自动执行:class Foo: def __init__(self,name,age): self.name = name self.age = age def __getitem__(self, item): return item+self.ageobj = Foo("Elon Musk",48)result =原创 2020-08-31 17:52:36 · 261 阅读 · 0 评论 -
Python Basic - 特殊方法-(__dict__()) “对象中所有的字段通过字典的形式返回
文章目录\_\_dict__() : 将对象中封装的所有内容通过字典的形式返回对象.__dict__ 输出字段类.__init__ 输出方法__dict__() : 将对象中封装的所有内容通过字典的形式返回对象.dict 输出字段class Foo: def __init__(self,name,age): self.name = name self.age = age def functest(self): print("析构方法,对象原创 2020-08-31 17:41:09 · 218 阅读 · 0 评论 -
Python Basic - 特殊方法-(__del__()) “对象被销毁” 时自动执行的方法
对象被销毁的时候自动触发执行的-析构方法(一般用不到,因为不知道什么时候销毁)但是对象什么时候被销毁?,python的自动回收机制什么时候回收才会销毁,通常用于例如,文件操作,打开文件,最后要关闭文件,但是可以将关闭文件的操作放在此方法中,避免文件未关闭带来的问题。class Foo: def __init__(self,name,age): self.name = name self.age = age def __del__(self):原创 2020-08-31 16:05:44 · 1098 阅读 · 0 评论 -
Python Basic - 特殊方法-(__add__()) “对象 + 对象 = 输出指定的内容
文章目录两个对象相加能得到什么呢?对象 + 对象 = 输出指定的内容\_\_add__(self,other)中的参数的意义返回一个类对象混搭花式玩法两个对象相加能得到什么呢?这个需要自定义,想输出什么就输出什么,碰到“+”号这种特殊符号就会去执行第一个对象中的特殊方法__add__(self,other),并且将第二个对象当作参数传入到第一个对象中。对象 + 对象 = 输出指定的内容class Foo: def __init__(self,name,age): se原创 2020-08-31 15:51:50 · 417 阅读 · 0 评论 -
Python Basic - 特殊方法-(__str__()) “str(对象名)” 时自动执行的方法
__str__(self) 将对象转换成字符串此方法在类中定义,通过类创建一个对象后,==str(对象)==将自动执行对象所指向的类中的__str__()方法,class Foo: def __init__(self): print("__init__test") def __call__(self, *args, **kwargs): print("call test") def __int__(self): return 123原创 2020-08-31 15:11:12 · 415 阅读 · 0 评论 -
Python Basic - 特殊方法-(__int__()) ----“int(对象名)” 时自动执行的方法
int(self) 将对象转换成数值此方法在类中定义,通过类创建一个对象后,int(对象)将自动执行对象所指向的类中的__int__()方法,class Foo: def __init__(self): print("__init__test") def __call__(self, *args, **kwargs): print("call test") def __int__(self): return 1111obj =原创 2020-08-31 14:54:02 · 540 阅读 · 0 评论 -
Python Basic - 特殊方法-(__call__()) “对象名()” 时自动执行的方法
__call__(self,*args,**kwargs):对象名后面加括号 就自动执行他了对象名():其实就相当于 类名()(),两个括号class Foo: def __init__(self): pass def __call__(self, *args, **kwargs): print("call test")obj = Foo()obj()"""call test"""如上所示,obj是通过Foo 这个类的创建的对象,而"obj原创 2020-08-31 14:36:38 · 189 阅读 · 0 评论 -
Python Basic - 特殊方法-(__init__())创建对象时自动执行的方法
文章目录\_\_init__() 构造方法:执行对象自动执行__init__() 构造方法:执行对象自动执行此特殊方法的用途是在通过类创建对象的时,此方法会自动执行一遍class func(): def __init__(self): print("__init__functiontest")obj = func()"""__init__functiontest"""== 如上示例中所展示,在通过类创建对象时,自动将print的语句执行了一遍。 ==.原创 2020-08-31 11:49:58 · 1034 阅读 · 0 评论 -
Python Basic - 面向对象高级--成员修饰符(__)
文章目录成员修饰符私有普通字段:私有静态字段私有普通方法私有静态方法特殊成员metaclass,类的祖宗异常处理反射单例模式成员修饰符在定义类时候,如果在字段或者方法名前在两个下划线就变成私有的了,类私有的字段跟方法,在外部无法通过对象直接进行访问但是在内部可以访问,所以可以在内部使用一个方法来访问这个私有字段,然后外部再调用这个方法分类:公有成员:私有成员:私有普通字段:私有静态字段:从外部不能直接访问,但是可以通过一些其它方式进行间接访问。私有普通字段:私有静态字段静态方法原创 2020-08-31 11:33:16 · 155 阅读 · 0 评论 -
python Basic -面向对象中级,字段,方法,类方法,静态方法,属性
面向对象中级调用方法的时候需要加括号,而调用字段的时候是不需要加括号的。静态字段将字段写到类里面, 这样多个对象具有同一个值的时候只会保留一份。普通字段属于对象,只能通过对象访问静态字段属于类,执行时可以通过对象,也可以通过类访问静态字段可以在不创建对象的情况下直接使用。方法的调用方式1 种是通过对象进行调用,另外一种是通过类进行调用,但是通过类调用的时候需要传递一个参数,这个参数就是对象名称,所以通过类调用之前还得创建一个对象。静态方法-添加一个装饰器即可如果是静态方法的话,s原创 2020-08-25 15:30:38 · 356 阅读 · 0 评论 -
Python Basic - 初识面向对象以及封装,继承,多态三特性,__init__()方法
selfself =====谁调用的类,self就代指谁,所以代指的是相应的对象原创 2020-08-20 16:10:05 · 294 阅读 · 0 评论 -
Python Basic - decorator 装饰器
文章目录闭包3个知识点:作用域,LEGB高阶函数闭包闭包原创 2020-08-17 16:21:01 · 140 阅读 · 0 评论 -
Python Basic - XML模块的基本使用
以上是查看。最后一句千万别忘了。如何创建一个XML的文件原创 2020-08-16 11:21:23 · 165 阅读 · 0 评论 -
zabbix 使用企业微信群机器人,使用markdown消息艾特群成员(@群成员)发送告警消息
本例只只包含代码,具体步骤可稳步至另外一篇博客查看https://blog.csdn.net/Huangfei10086/article/details/107713060将上篇文章中的代码换成如下代码即可脚本如下:#!/usr/bin/python3.6#_*_coding:utf-8 _*_#auther:Fei Huangimport requests,sys,json,timeimport urllib3urllib3.disable_warnings()def SendMe原创 2020-08-07 11:24:24 · 5408 阅读 · 8 评论 -
Zabbix Basic - 企业微信群机器人 使用markdown 发送带颜色的告警消息
文章目录代码片(直接复制粘贴 替换机器人的webhook即可)具体使用方式可点击此博客链接代码片(直接复制粘贴 替换机器人的webhook即可)#!/usr/bin/python3.6#_*_coding:utf-8 _*_#auther:Fei Huangimport requests,sys,json,timeimport urllib3urllib3.disable_warnings()def SendMessageURL(User,Subject,Messages): #原创 2020-07-31 18:39:09 · 3348 阅读 · 0 评论 -
企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type
错误内容{‘errcode’: 40008, ‘errmsg’: ‘Warning: wrong json format. invalid message type, hint: [1596176563_47_d9bbe040d5a640ea75f8625e35783c76], from ip: 61.183.117.38, more info at https://open.work.weixin.qq.com/devtool/query?e=40008’}查看官网错误代码意义40008 不合法原创 2020-07-31 18:10:44 · 12297 阅读 · 1 评论 -
Zabbix Basic -zabbix 使用python脚本调用群企业微信机器人将告警信息发送至“企业微信”群中,并@指定人员(提醒指定人员查看)
文章目录申请企业微信(略)创建企业微信群(略)添加群机器人(企业微信手机端)企业微信官网关于群机器人的配置说明请点击跳转查看复制以下代码到zabbix报警脚本存放路径进入到zabbix报警脚本存放路径创建python脚本文件按“i”键进入vim编辑器的插入模式,并粘贴以下代码(需要修改机器人的webhook的地址)修改脚本的执行权限测试发送消息脚本执行的格式开始测试(测试过程可省略)结果如下提醒某人查看(本例中需要提醒用户的账号为:test)结果如下zabbix 添加告警源(本示例中为zabbix-5.0.原创 2020-07-31 15:22:58 · 4936 阅读 · 1 评论