python
a_py
web
展开
-
细说Python之观察者模式(行为型模式)
文章目录行为型模式介绍理解观察者设计模式现实世界中的观察者模式观察者模式的通知模式拉模型推模型松耦合与观察者模式观察者模式的优缺点问答环节:行为型模式介绍前面讲了创建型模式(单例模式)、结构型模式(门面模式),现在讲讲行为型模式(观察者模式)。创建型模式的工作原理是基于对象的创建机制的。由于这些模式隔离了对象的创建细节,所以使得代码能够与要创建的对象的类型相互独立。结构型模式用于设计对象和类的结构,从而使它们可以相互协作以获得更大的结构。它们重点关注的是简化结构以及识别类和对象之间的关系。行为型模原创 2020-07-07 09:44:52 · 828 阅读 · 0 评论 -
python之属性描述符(上)
学会描述符之后,不仅有更多的工具集可用,还会对 Python 的运作方式有更深入的理解,并由衷赞叹 Python 设计的优雅。 ——Raymond Hettinger Python 核心开发者和专家关于属性描述符描述符是对多个属性运用相同存取逻辑的一种方式。例如,Django ORM 和 SQL Alchemy 等 ORM 中的字段类型是描述符,把数据库记录中字段里的数据与 Python 对象的属性对应起来。描述符是实现了特定协议的类,这个协议包括 __get__、__set__ 和 _原创 2020-06-15 22:07:27 · 622 阅读 · 0 评论 -
细说python设计模式之门面模式
文章目录理解结构型设计模式理解门面设计模式现实世界中实现门面模式(示例)最少知识原则迪米特法则(设计准则)问答前面的单例模式及工厂模式都是属于创建型设计模式,这里要开始讲结构型设计模式—门面模式。这篇内容:结构型设计模式概要利用UML图理解门面设计模式门面模式与最少知识原则理解结构型设计模式结构型模式描述如何将对象和类组合成更大的结构结构型模式是一种能够简化设计工作的模式,因为它能够找出更简单的方法来认识或表示实体之间的关系。在面向对象世界中,结构型模式是一种能够简化设计工作的模式,因为它能原创 2020-06-05 16:16:47 · 253 阅读 · 0 评论 -
细说Python设计模式之工厂模式
文章目录关于工厂模式细说工厂模式:简单工厂模式:工厂方法模式细说抽象工厂模式:关于工厂模式在上一篇文章中,我们讲到的是单例模式,单例一种创建型设计模式。这篇我们讲解另一种创建型模式,工厂模式。工厂模式具有以下优点:松耦合,即对象的创建可以独立于类的实现。客户端无需了解创建对象的类,它只需要知道需要传递的接口、方法和函数,就能够创建所需类型的对象了,这简化了客户端的实现。可以轻松在工厂中添加其他类来创建其他类型的对象,这无需更改客户端代码。最简单的情况下,客户端只需要传递另一个参数即可。工厂还原创 2020-06-02 16:26:29 · 209 阅读 · 0 评论 -
细说Python设计模式之单例模式
@[T]关于单例模式单例模式提供了这样的一个机制,确保类有且只有一个特定类型的对象,并提供全局访问点。所以单例模式适用于以下情况:日志记录与数据库操作、打印机后台处理程序等等。因为这些程序运行过程中只能生成一个实例,用来避免对同一资源产生相互冲突的请求。单例模式的特点:确保有且只有一个对象被创建。为对象提供一个访问点,以使程序可以全局访问该对象。控制共享资源的并行访问。S...原创 2020-05-13 10:05:59 · 211 阅读 · 0 评论 -
详谈python中的元类(深入浅出之类的类)
文章目录元类关于元类内置函数type()使用type创建类关键点创建元类自定义元类为什么使用metaclass类而不是函数为什么使用元类元类关于元类实例对象是由类创建的,但是类是什么创建的呢?类是元类创建的。在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。但是。python中的类,远不止如此。类同样也是一种对象。只要使用关键字class。python解释器在执行的时候就会创建一个对象。在下面的代码中,将在内存中创建一个对象,名字为ObjectTest.这个对象(类)自身拥有创建对原创 2020-05-09 17:05:44 · 290 阅读 · 0 评论 -
Django组件之modelform
前言经历了前面的纯手写我的form逻辑,以及我们的Django的form组件,终于来到了ModelForm组件了。ModelForm是我们form与model的结合很是强大。ModelForm:我直接写在了views.py里面,这是个不好的习惯知道吧,我是为了方便:在这里面class Meta: 的Meta是大写的请注意。class BookForm(ModelForm): cl...原创 2020-03-26 17:55:51 · 263 阅读 · 0 评论 -
Django组件之 form(modelform的引导)
form功能生成HTML标签验证用户数据(亦可以显示错误信息error)form表单保留上次提交的数据初始化页面显示的内容我们在这里一一讲解,友情闪现到上一篇:纯手写篇为了方便我这里没有直接创建一个forms文件。而是直接在views中直接写我们的Form的代码,大家还是自己创建一个forms文件好一点,都在一个目录下面是会破坏代码的耦合度的。创建一个BookForm类:cla...原创 2020-03-24 15:56:29 · 371 阅读 · 0 评论 -
项目中生成requests.txt文件(virtualenv与pipreqs)
相信每个人在开发项目的时候总会遇到把一个项目从一个电脑到另外一个电脑搭建环境和环境的部署的那种痛苦,如果你的项目是使用的virtualenv环境的话就可以使用pip freeze > requirements 生成,pip install -r 路径/requirements.txt 安装python的第三方包的list,但是你没有虚拟环境,你根本分不清这个项目使用了多少个包。这时候你是不...原创 2020-03-23 16:53:59 · 1578 阅读 · 0 评论 -
使用POP3收取邮件
第一个用于下载邮件的协议称为邮局协议(Post Office Protocal POP),现在最新版本是3所以称为POP3.关于POP31.pop3收取的邮件并不是一个可以直接阅读的邮件,而是一个原始文本的邮件,这和SMTP有些相似,SMTP发送的也是经过编码后的一段文本。2.由于pop3 收取的邮件是原始文本,所以需要使用到email模块进行解析原始文本。使其变成可阅读对象。3.1 使...原创 2020-03-18 17:42:45 · 1384 阅读 · 0 评论 -
SMTP协议之发送邮件(纯文本,HTML以及附件邮件)
1.关于SMTPSMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件。2.关于qq邮箱授权码我使用的qq邮箱,是要开启qq授权码等功能才能登陆以及发送邮件。其它邮箱也应该是差不多的。这个自己直接百度一下就有详细教程了。...原创 2020-03-12 11:50:57 · 3958 阅读 · 0 评论 -
from 某包 import 某模块 的问题(ModuleNotFoundError: No module named 'email.parser')
这是一个很是低级的错误,今天居然犯了,当然也是随意命名导致的。特此发个blog来提醒自己吧!我在搞自己的邮箱的时候test的时候。导入from email.parser import Parser居然报错了。而且我自己导入的是python自带的内置模块怎么会报错呢?(ModuleNotFoundError: No module named ‘email.parser’)我一直在想这是什么鬼,后...原创 2020-03-07 11:51:58 · 4687 阅读 · 1 评论 -
一个简单的网络共享下载网盘(需python3.6.1及以上)
环境安装:python3.6.1及以上1. pip install uvicorn2. pip install fastapi3. pip install aiofiles如果觉得这样安装太慢,那就选择国内源安装吧! 我这展示一个豆瓣源安装:pip install uvicorn -i https://pypi.douban.com/simple接下来就编写代码吧:我们在Downloa...原创 2020-02-21 11:19:48 · 814 阅读 · 0 评论 -
Django的form表单(Django的form以及modelform的引导)
前言:在一个网站中肯定会有大量的表单提交,但是如果每个表单都需要我们自己全部生写的话,就比较难受了,所以Django中的modelform就很有意思了。Django中的form:木有对比就没有伤害。所以要知道Django的modelform的好,就要从普通的form来对比。form:先创建一个form_test的Django项目:里面有有个app01 :的app。目录如下;...原创 2020-01-14 11:13:38 · 885 阅读 · 0 评论 -
基于Django的RBAC组件(menu显示)进阶篇(四)
我们之前权限中的list分类的东东,因为edit,delete,add这些都不适合放在menu,所以就放list下的东东。list相关,那我们重新拿数据库中的字段信息了,menu中,至少需要url,title,这两个字段,然后是list分类下的。所以我们需要list,url,title这三个字段呢!我们需要在permission_url.py末尾添加这几行代码:版本1:# 唯有list的u...原创 2020-01-06 10:46:55 · 785 阅读 · 0 评论 -
基于Django的RBAC组件(按钮的细粒度权限)进阶篇(三)
前言 :我这边使用002账号登录:其权限只有这几个:只有查看和添加用户的权限,但是你看看我们这个网页中,既然用户没有权限,为什么还要给别人选项,这不是给人心里添堵吗。所以我们需要进行细粒度权限 没有权限就不需要给别人显示这个选项。细粒度权限控制 前面url的权限已经完善了,所以我们需要更细粒度的权限控制的时候就需要用到我们,进阶篇(二) 那时添加的表字段了,里面我们不是添加了一个acti...原创 2020-01-03 13:54:07 · 1080 阅读 · 1 评论 -
基于Django的RBAC组件(角色的访问控制)进阶篇(二)
之前这个基础版有其局限性,当我们进行更细粒度的权限控制时会显得比较乏力。所以在这进阶篇中,我们进行了改进。对数据库表以及表字段进行了增加完善。所以看不懂的话,可以先看看基础版现在开始正题:首先我们先对 app01/views.py中的这两个函数进行修改def user(request): user_obj = User.objects.all() return render(...原创 2020-01-02 10:34:52 · 874 阅读 · 0 评论 -
基于Django的RBAC组件(角色的访问控制)基础版(一)
关于RBACRBAC是基于角色的访问控制(Role-Based Access Control )在 RBAC 中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便。RBAC实际上也就是 Who 、What、How之间的关系,也就是Who对What进...原创 2019-12-17 14:31:57 · 2080 阅读 · 8 评论 -
Python操作MySQL之SQLAlchemy
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。 这就是Python中,最有名的ORM框架是SQLAlchemy。但是sqlalchemy无法直接对数据库进行操作,必须以来pymsql等第三方插件,Dialect用于和数据API进行交流,根据配...原创 2018-10-18 20:16:40 · 211 阅读 · 0 评论 -
python中的偏函数
今天写一个叫做偏函数的东西,它可以让我们在传入参数的时候自动传入参数。定义: 偏函数是将所要承载的函数作为 partial() 函数的第一个参数,原函数的各个参数依次作为 partial() 函数后续的参数,除非使用关键字参数。例子:# @Time : 2019/6/19 下午 2:33# @Author : lh# @Email : [email protected]# @File ...原创 2019-06-20 15:59:21 · 798 阅读 · 0 评论 -
LocalProxy
先看看这个关于class 下划线方法的使用。例1:# -*- coding: utf-8 -*-# @Time : 2019/6/24 下午 9:20# @Author : lh# @Email : [email protected]# @File : test.py# @Software: PyCharmclass Test(object): def...原创 2019-06-25 09:44:45 · 789 阅读 · 0 评论 -
通过字符串引入模块下的属性
flask中可以配置一个字符串导入settings下的配置文件app.config.from_object("settings.ProductionConfig")这里就是来讲解一下这个到底是怎么实现的。例1:原创 2019-06-25 00:23:31 · 116 阅读 · 0 评论 -
SQLAlchemy的使用
SQLAlchemy是一个基于python实现的ORM框架。该框架建立在DB API之上,使用关系对象映射进行数据库操作,简而言之就是,将类和对象转化为sql,然后使用API执行SQL并获取执行结果。1.安装SQLAlchemypip install sqlalchemy组成部分:Engine,框架的引擎Connection Pooling ,数据库连接池Dialect,选择连接数...原创 2019-06-28 15:43:02 · 191 阅读 · 0 评论 -
scrapy的安装
linu下的安装pip install scrapywindows下的安装在win下面的安装依赖多一点,而且还需要安装一个已经编译好的Twisted的库,和安装一个pywin32库1.安装scrapy直接安装是会报错的:去这个网站下载下载你对应的python版本的库。安装pip install刚刚下载的那个文件然后即可安装scrapy了pip install scrapy...原创 2019-07-10 16:06:10 · 137 阅读 · 0 评论 -
scrapy爬虫没有任何的返回数据( Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min))
在scrapy中爬取不到任何返回值。G:\scrapy_tesy>scrapy crawl douban2019-07-11 10:26:15 [scrapy.utils.log] INFO: Scrapy 1.6.0 started (bot: scrapy_tesy)2019-07-11 10:26:15 [scrapy.utils.log] INFO: Versions: lxm...原创 2019-07-11 10:43:26 · 14903 阅读 · 11 评论 -
scrapy中设置代理的三种方式(内置(2),自定义(1))
爬虫经常会用到代理ip如果你用你的ip可能用不了多久就会被封掉的,这时候就要使用代理ip了:scrapy里面其实有内置的代理拓展,源码这边我就不一一说明了直接说如何使用:要使用代码必须要在爬虫开始前:所以第一种的使用是在我们的start_request里面:内置(1): def start_requests(self): # 这里是代理ip import o...原创 2019-07-19 10:08:51 · 14572 阅读 · 0 评论 -
scrapy的pipeline(持久化)
我这边已经创建好一个名为scrapy_pipeline的项目了。然后创建一个爬虫为douban:项目目录如下:爬取豆瓣网需要伪装浏览器,修改settings.py文件的内容:# Crawl responsibly by identifying yourself (and your website) on the user-agent#USER_AGENT = 'scrapy_pipeli...原创 2019-07-19 21:46:20 · 901 阅读 · 0 评论 -
自定制命令(让scrapy在pycharm下跑起来)
pytcharm运行单个爬虫:# -*- coding: utf-8 -*-# @Time : 2019/7/19 下午 5:19# @Author : lh# @Email : [email protected]# @File : manage.py# @Software: PyCharmimport sysfrom scrapy.cmdline import execute...原创 2019-07-20 10:54:04 · 223 阅读 · 0 评论 -
多层列表嵌套展开(生成器版)yield from实例
如果你有一个这样多层嵌套的列表:a = [1, 2, 3, [4, [5, 6, 7], 8], 9, 10, [11, 12, 13], 14]如果你要把它平铺成这样:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]很多人都会使用递归加循环来师兄:# -*- coding: utf-8 -*-# @Time : 2019/7/30 ...原创 2019-08-01 23:59:37 · 1563 阅读 · 0 评论 -
实现优先级队列
question: 现在想实现一个能够以给定的优先级来对元素排序,且每次pop操作时都会返回优先级最高的那个元素。solution: 利用heapq实现一个简单的优先级队列。import heapqclass PriorityQueue: def __init__(self): self._queue = [] self._index = 0 ...原创 2019-08-30 11:54:30 · 587 阅读 · 0 评论 -
列表解析式
代码:In [1]: lists = [1, 2, 3, 4, 5] In [2]: l_even = [i for i in lists if i%2 ==0] In [3]: l_even ...原创 2019-05-30 23:17:10 · 191 阅读 · 0 评论 -
if __name== '__main__'解析
在学习python基础语法时:在程序的最后面经常会出现if __name == 'main’这个语句,这个代码的作用是既可以当前.py文件直接运行,也能保证其可以被作为模块被其他.py文件导入使用。__name__本质:你可以在python中输入这两行代码:print(__name__) # 输出:__main__print(type(__name__)) # 类型:<class...原创 2019-05-30 23:01:59 · 200 阅读 · 0 评论 -
django.template.exceptions.TemplateDoesNotExist: rest_framework/api.html 报错
django.template.exceptions.TemplateDoesNotExist: rest_framework/api.html报错,我在使用postman进行提交请求是能正常调用的,但是使用浏览器就会抛出这个错误这是因为我们没在settings中的app中注册我们的rest_framework导致的。只需在INSTALLED_APPS = [ 'django.c...原创 2019-05-14 15:40:55 · 5974 阅读 · 2 评论 -
Django ORM相关操作(1)
今天先将一些比较常见的参数吧。关于orm操作的。参数1. all(): 查询所有结果 2. filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 3. get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。 4. ...原创 2018-11-15 21:13:40 · 146 阅读 · 0 评论 -
django 项目创建及连接mysql
使用virtualenv创建虚拟环境,你可能会问为什么要使用虚拟环境,虚拟环境就是一个个隔离区,让你的项目之间没有冲突,比如你这个项目可能要使用django1.11.11,下一个项目你的boss就要求你别的项目使用django2.1。还有你这次可能使用py2,下次要使用py3,virtualenv就可以很好的帮你解决掉这些问题。我是在使用virtualenv的基础上使用virtualenvwr...原创 2018-11-06 00:44:07 · 361 阅读 · 0 评论 -
python的Django模板系统(由于Django的强大需要定时更新)
1.常用语法只需要记两种特殊符号:{{ }}和 {% %}变量相关的用{{}},逻辑相关的用{%%}。 在Django的模板语言中按此语法使用:{{ 变量名 }}。当模版引擎遇到一个变量,它将计算这个变量,然后用结果替换掉它本身。 变量的命名包括任何字母数字以及下划线 ("_")的组合。 变量名称中不能有空格或标点符号。点(.)在模板语言中有特殊的含义。当模版系统遇到...原创 2018-11-02 16:31:11 · 234 阅读 · 0 评论 -
python检测U盘的插入,以及进行自动复制文件并写入文件
技术要点分析:1.如何检测有U盘的插入。2.如何复制U盘里面的东西3.如果U盘可写,如何写入文件到U盘里面。# -*- coding: utf-8 -*-# @Time : 2018/11/1 21:08# @Author : # @Email : # @File : s6.py# @Software: PyCharmfrom time impor...原创 2018-11-01 21:28:49 · 7168 阅读 · 3 评论 -
django入门使用pycharm创建教程(virtualenv进行版本控制)
1.引出,在现在你写一个项目不可能只是使用一个版本的东西,如你做django项目,这次可能你的boss要求你使用django1.11.11的,下一次就要求你使用django2.1.1 版本的了。但是如何做到版本与版本之间的兼容呢?这里就要使用虚拟环境了,我这里使用的虚拟环境是virtualenv,关于virtualenv的安装我这里先不进行教学。直接使用virtualenv进行安装django1....原创 2018-10-24 23:43:13 · 581 阅读 · 0 评论 -
python的特殊方法 "__str__"详解
今日在Django的orm时用到__str__方法,现在就在这讲解一下这个方法的使用。__str__是Django的一个内置方法。str一般是用于说明类的说明,或者定义自己想要的输出结果。 1.自定义自己想要的输出。class person(object): def __init__(self, id, name): self.id = id ...原创 2018-10-25 10:28:00 · 2986 阅读 · 1 评论 -
Python3 PyMySQL 的使用
什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。 python中安装pymysql:pip install pymysql安装好pymysql后就可以...原创 2018-10-18 20:58:47 · 679 阅读 · 0 评论