软件命名规范:分文件存储 当代码存放在一个py文件中时会存在一下缺点: 不便于管理 可读性差 加载速度慢 是Django的雏形 程序员预定俗称的一些东西 启动文件:也叫启动接口,通常文件夹名字使用bin,存放启动程序,通常使用starts命名py文件 公共文件:是大家都可以使用的文件,功能,通常使用lib命名文件夹,py文件使用common命名py文件 配置文件:也叫静态文件,存储的都是变量,数据库的一些连接方式,获取到的是都是redis,文件夹命名为conf,py文件命名为settings 主…
目录 1.web应用模式 2.API接口 3.Restful API规范 4.序列化 5.Django Rest Framework 1.drf的简单介绍 2.drf的特点 3.如何安装drf 4.drf的强大之处 5.序列化器的使用 1.web应用模式 在开发Web应用中,有两种应用模式: 1.前后端不分离 2.前后端分离 2.API接口 为了在团队内部形成共识.防止个人习惯差异引起的混乱,我们需要找到一种大家都觉得很好的接口实现规范,而且这种规范能够让后端写的接口,用途一目了然,减少双方之间…
RESTful API规范 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Roy Fielding的博士论文中. RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中. 这种风格的理念认为后端开发任务就是提供数据的,对外提供的是数据资源的访问接口,所以在定义接口时,客户端访问的URL路径就表示这种要操作的数据资源. 而对于数据资源分别使用POST.DELET…
1. 域名 应该尽量将API部署在专用的域名下. https://api.example.com 如果确定API简单,不会有进一步的括在,可以考虑放在主域名之下. https://example.org/api/ 2 版本(Versioning) 应该将API的版本放入URL中 http://www.example.com/api/1.0/foo #1.0版本 http://www.example.com/api/1.1/foo #1.1版本 http://www.example.com/api…
1. URI URI 表示资源,资源一般对应服务器端领域模型中的实体类. URI规范 不用大写: 用中杠-不用下杠_: 参数列表要encode: URI中的名词表示资源集合,使用复数形式. 资源集合 vs 单个资源 URI表示资源的两种方式:资源集合.单个资源. 资源集合: /zoos //所有动物园 /zoos/1/animals //id为1的动物园中的所有动物 单个资源: /zoos/1 //id为1的动物园 避免层级过深的URI /在url中表达层级,用于按实体关联关系进行对象导航,一般…
urls: from django.conf.urls import url from app01 import views urlpatterns = [ # url(r"comment/$",views.Comment.as_view()), url(r"comment/(?P<pk>\d+)",views.CommentDetailView.as_view()), url(r"article/$",views.Article.a…
简介 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. rest是一种软件架构风格,如果你们的接口是rest接口,那么就可被认为你们的的接口是restful的,英文名词和形容词的区别.     rest接口是围绕“资源”展开的,利用HTTP的协议,其实rest本也可以和HTTP无关,但是现在大家普遍的使用rest都是依托于HTTP协议.HTTP 的url即资源.  …
一,简介 DRF 即Django rest framework 二,rest 规范 1 协议 API 与用户通信,总是使用https协议 2 域名 1) 应尽量将API 部署在域名下(这种情况会存在跨域问题) https://api.example.com 2)如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下 https://example.org/api/ 3 版本 应尽量将版本放到URL https://api.example.com/v1/ ps:另一种做法是将版本放在HTTP…
Eve是一款Python的REST API框架.用于公布高可定制的.全功能的RESTful的Web服务.帮你轻松创建和部署API,本文翻译自Eve官方站点: http://python-eve.org/quickstart.html#database-interlude Eve 高速入门: 渴望開始吗?这个页面将提供Eve一个非常好的介绍.在这之前假设: 你已经安装好了Eve. 假设你还没有,能够点击到安装页面. 已经安装了MongoDB. 而且MongoDB 已经运行了. 一个最小的应用 一个…
Python解释器的安装 1 下载 ​ 下载地址:https://www.python.org 选择windows平台的链接进行下载 https://www.python.org/downloads/windows/ 下载64位版本(根本本人电脑选择适合的位数) 2安装 (切记:一定要勾选Add Python 3.6 to PATH,会自动安装环境变量,使第六步的测试安装更加方便) 3修改安装路径 (勾选Install for all users,然后根据本人安装习惯选择安装路径,此安装路径最好…
小数据池 int: -5~256 str: 字母,数字长度任意符合驻留机制 字符串进行乘法时总长度不能超过20 特殊符号进行乘法时只能乘以0 代码块: 一个py文件,一个函数,一个模块,终端中的每一行都是代码块 int:-5~无穷大 str: 定义字符串的时候可以是任意的 字符串(字母,数字)进行乘法时总长度不得超过20 特殊字符(中文,符号)进行乘法时乘以0或者1 bool: True False is是判断两边的内存地址是否相同 ==判断两个值是否相等 代码块.小数据池同在的情况下先执行代码…
Day 01 整型: 对比: 在python 2 版本中有整型,长整型long 在python 3 版本中全部都是整型 用于计算和比较 整型和布尔值的转换 二进制转换成十进制: ​ print (int("111010100",2)) # 2进制 - 10进制 0 * 2**0 + 1 * 2 ** 1 + 1 * 2**2 + 1* 2**3 + 1 * 2 ** 4 + 1 * 2 ** 5 0 + 2 + 4 + 8 + 16 + 32 = 62 print(int("…
python是一门解释型编程语言 变量名命名的规则: 变量名由字母,数字,下划线组成 变量名不能以数字开头 变量名要具有可描述性 变量名要区分大小写 变量名禁止使用python关键字 变量名不能使用中文和拼音 变量名推荐写法: 驼峰体 下划线(推荐使用下划线) 常量 变量名全部大写叫做常量,一直不做更改的量 常用于配置文件中 注释 单行注释 -# 多行注释 - """""" '''''' 基础数据类型初始 字符串( str ):用于存储一些数据,…
序列化(背) json :将数据类型转换成字符串(序列化),将字符串装换成原数据类型(反序列),支持dict,list,tuple等,序列后都变成了列表 dumps,loads ------ 用于网络传输 json.dumps:将数据类型转换成字符串 json.loads:将字符串转换成原数据类型 dump,load ------ 用于文件传输 json.dump:一个load对应一个dump 中文转换时,必须加ensure_ascii = False 转换后的数据类型排序:sort_keys…
名称空间: 内置空间:python解释器自带的一块空间 全局空间:py文件中顶格写的就是全局空间 局部空间:函数体中就是局部空间 加载顺序: 内置空间 全局空间 局部空间 # def func(): # a = 1 # print(a) # func() 取值顺序: 局部空间 全局空间 内置空间 a = 10 def func() print(a) func() 作用域: 全局作用域:全局+内置 局部作用域:局部 函数的嵌套 ​ 不管在什么位置,只要是函数名()就是在调用一个函数. # 混合嵌套…
time模块:import time time.time():时间戳,是一个浮点数,按秒来计算 time.sleep():睡眠,程序暂停多少秒执行 python中时间日期格式化符号: 必背 %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) 简单记忆,了解就好 %a 本地简化星期名称…
自定义模块 定义:一个文件就是一个模块(能被调用的文件,模块就是一个工具箱,工具就是函数) 作用: 将代码文家化管理,提高可读性,避免重复代码 拿来就用(避免重复造轮子),python中类库比较多,提升开发效率 import导入时会做三件事: # import test # 只能将整个工具箱拿来 # a = test.t1 # b = test.t2 # # a() # b() 将.py文件中的所有代码读取到当前文件 在当前文件开辟空间 等待被调用 import导入同一个模块名时,只执行一次 i…
1.什么是生成器 核心:生成器的本质就是一个迭代器 迭代器是python自带的的 生成器是程序员自己写的一种迭代器 编写方式: 基于函数编写 推导式编写 def func (): print("这是一个函数") return"函数" func() def func(): print("这是一个生成器") yield"生成器" #func() 生成一个生成器 print(func().__next__) #启动生成器 输出结果:…
函数名的第一类对象(概述): 使用方式: 函数名可以当做值赋值给变量 def func(): print(1) print (func) #查看函数的内存地址 a = func print (a) # 函数名可以当做容器中的元素 dic = {"1":login,"2":register,"3":index} msg = """ 1 登录 2 注册 3 主页 """ choose = i…
开放封闭原则:在不修改源代码及调用方式,对功能进行额外添加就是开放封闭原则 开放:对代码的扩展进行开发 封闭:修改源代码 装饰(额外功能) 器:工具(函数) 普通版: # print(time.time()) #时间戳,小数 import time def func(): time.sleep(1) print("这是小刚写的功能") def func(): time.sleep(1) print("这是小红写的功能") def index(): time.slee…
""" name = input(">>>")通过代码来验证name变量是什么数据类型? """ name = input(">>>") print(type(name),"name") """if条件语句的基本结构?""" 1.if -- 如果. 官方推荐四个空格,Tab 空格和tab不能混…
1. 文件操作: 读操作: 格式:f = open("文件路径",mode = "r",encoding = "utf-8") f : 代表文件句柄 文件路径: 绝对路径:从根文件夹下查找 相对路径: 相对于某个文件进行查找 f = open("D:\Python_s25\day08\小姐姐电话号",mode="r",encoding="utf-8")# print(f.read())…
Day 01 整型: 对比: 在python 2 版本中有整型,长整型long 在python 3 版本中全部都是整型 用于计算和比较 整型和布尔值的转换 二进制转换成十进制: ​print (int("111010100",2)) python 2进制 - 10进制 0 * 20 + 1 * 2 1 + 1 * 22 + 1* 23 + 1 * 2 ** 4 + 1 * 2 ** 5 0 + 2 + 4 + 8 + 16 + 32 = 62 print(int("11111…
ascii码: 支持英文,数字,符号 1字节 不支持中文 gbk(国标) 支持英文,数字,符号 1字节 支持中文 2字节 unicode(万国码): 支持英文,数字,符号 4字节 支持欧洲 4字节 支持亚洲 4字节 utf-8: 支持英文,数字,符号 --1字节 支持欧洲 --- 2字节 支持亚洲 ---- 3字节…
字典: 定义:dict dict = {"key":"value"} -- 键值对 作用:存储大量数据,数据和数据起到关联作用 所有的操作都是通过键来完成 键:必须是不可变的数据类型(可哈希),且唯一不可变 值:任意的数据类型 字典是可变的数据类型,无序的 字典的增: 暴力添加:dict["key"] = "value" 添加一个键值对,可以是列表 有责添加,无则不添加 dict.setdefault("key&qu…
1.列表 数据类型之一,存储数据,大量的,存储不同类型的数据 列表是一种有序的容器 支持索引 列表是一种可变数据类型 原地修改 列表中只要用逗号隔开的就是一个元素,字符串中只要是占一个位置的就是一个元素 1.1 列表的增加: lst.append() 追加(在最末尾的地方进行添加) lst. insert() 插入 lst.extend() 迭代添加 1.2 列表的删除 lst.clear() 清空 lst.pop() 删除 lst.remove() 移除 del lst[4] # 通过索引删除…
while 循环 ​ while 条件: ​ 循环体 终止循环的两种办法: 改变条件 break break和continue的用法: break 用法:打破当前循环,(终止当前循环),所处位置在循环体中,用在循环体之后 continue用法:形成一个闭环,循环执行continue之前的循环体,continue会伪装成最后一行代码,不执行他之后的代码 while else: ​ while 条件: ​ 循环体 ​ else: ​ 结果 # 当while循环体中出现了break就不会再执行else…
函数初识 定义:def--关键字 ​ 将某个功能封装到一个空间中就是一个函数 功能: ​ 减少重复代码 函数的调用 ​ 函数名+():调用函数和接收返回值 函数的返回值 return 值 == 返回值 可以返回任意的数据类型 return 返回多个内容是元祖的形式 return 下方不执行,并且会终止当前函数 return 不写或者写了return 后面不写值都会返回None 函数的返回值返回给函数的调用者 函数的返回值可以有多个结果 函数的参数 分类: 位置参数:一一对应 默认参数:参数定义是…
导入:import random 随机小数:random.random():大于0小于1之间的小数 指定数字之间的小数,不包含指定的最大值:random.uniform() 随机整数:random.randint(1,5):大于等于1且小于等于5之间的整数 指定奇数或偶数,使用步长:random.randrange(1,19,步长) 随机选择一个并返回,会出现重复元素,以列表形式返回:random.choice((1,2,3,),k=3),出现3个元素 任意选择三个元素出现,不会重复:rando…
递归:不断地调用自身,用函数实现 死递归(死循环): def func(): print(1) func() func() 知识点:官方说明最大深度1000,但实际执行998或997以下,看电脑性能 满足两个条件才是递归 不断调用自身 有明确的终止条件 举例:以计算年龄为例 def age(n): if n == 1: return 18 else: return age(n-1)+2 print(age(3)) #3代表执行三次 拆解: ![image-20190627140416004](C…