Django REST framework APIView&ViewSets
Django REST framework(简称DRF)为我们提供强大的通用view的功能,本博客对这些view进行简要的总结分析。首先,我们看一下主要的几种view以及他们之间的关系。 这其中,还涉及了mixins,主要也分为5类: mixins 作用 对应HTTP的请求方法 mixins.ListModelMixin 定义list方法,返回一……
Django REST framework Serializer
一、Serializers Serializers(序列化器)是什么?序列化器允许将诸如查询集(QuerySet)和模型实例之类的复杂数据转换为原生Python数据类型,然后可以将它们轻松地呈现为JSON,XML或其他内容类型。序列化器还提供反序列化,在首次验证传入数据之后,可以将解析的数据转换回复杂类型。 REST framework中的序列化类与Djan……
Python反射机制详解
一、Python反射机制 Python反射,可以理解为利用字符串的形式去对象中操作成员属性和方法,常见操作就包括了查找、增加、删除、判断等,是一种基于字符串的事件驱动! 解释Python的反射,先提一个简单的需求。考虑有这么一个场景,根据用户输入的url的不同,调用不同的函数,实现不同的操作,也就是一个url路由器的功能,这在web框架里是核心部件之一。比如……
Python面向对象编程
一、面向对象编程 程序等于指令加数据组成(算法加数据结构),Python 支持面向过程式编程也支持面向对象式编程。面向对象编程——Object Oriented Programming,简称 OOP,是一种程序设计思想。OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序……
Python编程常用技巧–持续更新
1. Python判断值是否为空 代码中经常会有变量是否为None的判断,有三种主要的写法: 第一种是:if x is None 第二种是:if not x 第三种是:if not x is None`(这句这样理解更清晰`if not (x is None)`) 。`if x is not None`是最好的写法,清晰,不会出现错误,以后坚持使用这种写法。……
Python列表解析式
列表解析式也称之为列表推导式,即List Comprehensions,是Python内置的非常简单却强大的可以用来创建列表的生成式。本质上就是用列表来构建列表,通过对已有列表中的每一项应用一个指定的表达式来构建出一个新的列表。列表解析式的优势是编码简单,运行起来很快。 列表解析式的三个核心要素是: 1. 作用于输入序列的运算表达式; 2. 对输入序列的循环……
Python解包(Unpacking)
一、序列解包 Python赋值语句技巧之序列解包(sequence unpacking),是Python语言赋值语句的一种技巧方法,在给多个Python变量命名同时赋值时是很有效率的一种方法。简单说就是通过一条命令把string/list/tuple的元素分别赋值给多个变量。 # string解包; >>> ……
Python模块:PyMySQL
一、数据库驱动介绍 任何应用都离不开数据,所以在学习 Python 的时候,当然也要学习一个如何用 Python 操作数据库了。MySQLdb 就是 Python 对 MySQL 数据库操作的模块之一。在 Python 2 时代 MySQLdb 库可以说是标配,但是很遗憾目前 MySQLdb 还不支持 Python 3,官方说即将支持,但是市场已经没有了。 ……
Python模块:xlwt、xlrd、openpyxl
一、xlwt写excel xlwt是一个用于向旧的Excel文件写入数据和格式化信息的库,旧的Excel即后缀为.xls(2007版本之前的Office),新的后缀为.xlsx(2007版本及之后的Office)。xlwt、wlrd只能读写xls文件,而不能操作xlsx文件。旧的Excel一个工作表最多可有65536行,行用数字1—65536表示,最多可有2……
Python数据类型:bytes
bytes 类型 在 Python 2 中,有两种类型的字符代表字符串,分别是 Strings 和 Unicode。默认将 Strings 以 utf-8 编码成 bytes 类型,而不是使用 unicode 编码(Python 3 已经把 String 使用 Unicode 编码,Unicode 就是 string,而 bytes 就是 bytes),且存……
Django模型QuerySet序列化
我们知道Django Model QuerySet API有很多方法都是返回QuerySet对象。但很多时候我们都需要对QuerySet进行一个序列化操作,以便于提供给其他服务使用。 比如查询出模型对象所有记录: >>> raw = Author.objects.all() >>> type……
Python处理SQL语句(提供SQL查询平台使用)
在搞公司的SQL查询(MySQL)平台时,需要对用户查询SQL进行条数限制,默认是在配置文件中配置一个“limit = 1000”这样的参数。最自然想到的就是对用户通过web传入的SQL做处理,默认加上limit参数。这样一来就有这么几个问题需要处理: 1. 如果用户自己传入了limit 10这样的条件怎么办? 2. 如果用户自己传入了limit 10,2这……