路飞学城python全栈开发_python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)...

昨日内容回顾

ContractedBlock.gif

ExpandedBlockStart.gif

1. 为什么要做前后端分离?-前后端交给不同的人来编写,职责划分明确。-API (IOS,安卓,PC,微信小程序...)-vue.js等框架编写前端时,会比之前写jQuery更简单快捷。2. 对于后端人员,主要为前端提供:API(接口)

以前的你的接口:

http://127.0.0.1:8000/index/http://127.0.0.1:8000/users/http://127.0.0.1:8000/add_users/http://127.0.0.1:8000/del_users/http://127.0.0.1:8000/edit_users/restful 规范:

http://127.0.0.1:8000/users/

3. 谈谈你对restful规范的理解?1. 使用https代替http

https://www.luffycity.com/course/detail/web/3http://www.luffycity.com/course/detail/web/3

2. 在URL中体现自己写的是API

https://www.luffycity.com/api/https://api.luffycity.com/可能会跨域3. 在URL中体现版本

https://www.luffycity.com/api/v1/users

https://www.luffycity.com/api/v2/users4. 名词(面向资源编程)

https://www.luffycity.com/api/v1/users

https://www.luffycity.com/api/v1/song5. 行为

https://www.luffycity.com/api/v1/users

method:

get,获取

post,新建

put,更新

patch,局部更新

delete,删除6. 条件

https://www.luffycity.com/api/v1/users?page=1https://www.luffycity.com/api/v1/users?page=1&gender=2

7. 状态码200

301

302

404

500推荐使用code:defxx(request):

ret= {'code':1000,'data':None}try:

...exceptExptions as e:

ret['status'] = 1001ret['error'] = 'xxxx错误'

returnJsonResponse(ret)8. 错误信息

{

code:10001,

error:'用户名或密码错误'}9. 返回结果:

GET:

https://www.luffycity.com/api/v1/users

响应:

{

code:1000,

data: [

{'name':'赵森','age':19},

{'name':'赵云','age':16},

{'name':'赵云','age':16},

{'name':'赵云','age':16},

{'name':'赵云','age':16},

]

}

GET:

https://www.luffycity.com/api/v1/users/1/响应:

{

code:1000,

data:{'name':'赵森','age':19},

}

POST:

https://www.luffycity.com/api/v1/users

请求体:

{'name':'大表哥','age':19}

响应(不要):

{

code:1000,

data:{'id':9, 'name':'大表哥','age':19}

}

PUT/PATCH:

https://www.luffycity.com/api/v1/users

请求体:

{'name':'大表哥','age':19}

响应(不要):

{

code:1000,

data:{'id':9, 'name':'大表哥','age':19}

}

DELETE:

...10. hyper link

访问:https://www.luffycity.com/api/v1/users

{

code:1000,

data:[

{'id':1,'name':'赵森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'赵森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'赵森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'赵森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

{'id':1,'name':'赵森','age':19, 'depart':https://www.luffycity.com/api/v1/depart/1/},

]

}

https://www.luffycity.com/api/v1/users

{

code:1000,

data:[

{'id':1,'name':'赵森','age':19, 'depart_title':'公关部'},

{'id':1,'name':'赵森','age':19, 'depart_title':'公关部'},

{'id':1,'name':'赵森','age':19, 'depart_title':'公关部'},

{'id':1,'name':'赵森','age':19, 'depart_title':'公关部'},

{'id':1,'name':'赵森','age':19, 'depart_title':'公关部'},

]

}4. django rest framework框架的作用?

帮助开发者可以快速开发出遵循restful规范的API5. django rest framework框架都有哪些组件(10)?

版本

权限

认证

节流

分页

解析器****序列化*****视图****路由

渲染器

View Code

补充:

http传输的数据是明文的,https传输的数据是加密的

简单情况下,使用status,1表示成功,0表示失败

复杂情况下,使用code,查看支付宝api的code说明

一般写接口的时候,推荐使用code。错误信息是服务器返回的!

根据restful规范,POST请求,要返回新增的完整数据。但是,如果前端不需要这些信息,可以不返回!

规定是死的,人是活的。所以要看应用场景!

delete默认是没有返回信息的,但是,还是得返回一个状态。谁知道你,删除有没有成功呢?

hyper link,返回信息中包含超链接。这个也是看需求了

restful规范,不光是python才有。其他语言,也遵循这个规范!

一、路飞学城背景

初期

2012年,有2个人讲python。其中一个是alex,主要是周末班。有7个人,当时没有固定场所,在7个人所在公司的办公室讲课。

一周换一家公司。

2014年,alex进入汽车之家。2014下半年,和佩奇。讲Python,也是讲周末班。有了固定场所--沙河。

线下班,复制难。不好拿投资,规模扩大难。

第一版:给视频+拉群

第一版,在线教育。弄一个QQ群,将视频放到网上。给钱买视频,比如1000块,拉群进去讨论。

学成率比较低,学员自己坚持不下去。10%以下的成功率!

第二版:51cto合作

第二版,和51cto合作,将视频交由51cto管理。每周三,周五做直播,直播2小时。主要做在线答疑!

前期看直播的人,比较多。做了3次直播之后,指数急剧下滑,因为学员技术参差不齐,后面都听不懂了!

最终以失败告终,51cto下架

第三版:51cto合作-->微职位

由alex和51cto谈判,推动51cto的微职位,就是一对一辅导。现今,51cto官网,还保留者微职位。

还是给视频,并且分配一个导师,协助学员学习。并不是真正的一对一,找兼容人员。比如优秀的毕业生,1000~1500的费用。

导师主动跟进学员学习!

好的导师,一个人,可以对接50个人。有些人,遇到问题,会先自己搞定,搞不定,才会找导师。提升自己的解决问题能力,导师就会很轻松。

学成率也不高,相对于以前的看视频,学成率有提升!

第一个问题,导师问题。导师每周跟进一次。有些不问问题的学生,可能忽略跟进了

第二个问题,学生问题。周末在家一天,大多数学不学下的,出去玩,或者打游戏了。学生不积极,没有明确目标

第三个问题,视频问题。针对的学员的状态,是不同的!还有一些,不录制的视频。跟线上不一样!

第四个问题,扩张问题。光靠线下,无法壮大。

第四版:路飞学城

老男孩,自己做路飞学城。初期,由学生投资,占2%,还有销售投资,2个人,一人50万。路飞学城正式成立!

视频,单独录制

由导致单独录制,根据知识点,录制一小段

导师奖惩

以前是靠人工,现在是自动化。

聊天信息,导师上传到服务器。每周都要有,7天聊天没有,就扣钱!

学员购买课程后,安排导师,导师账号有一定的金额。导师没有安装规定,就扣钱。导师自己肯定不愿意扣钱的,所以会主动跟进!

学员不做作业,导师差评,都扣钱

学员换导师,导师分配的金额就没有了,给另外的导师!

以前导师是兼值的,没有办法做到实时回复,导师也有自己公司的事情要做。

后来招了全职导师,做了服务升级。这些是需要掏钱的!

颠覆了在线教育,以前都是看视频,现在是一对一辅导!

学员奖惩

学生,有奖学金

作业做的好,学的快,有奖励金额!

全线课程6个月,是有时效的。过了6个月,就没有了!需要重新购买,这样可以督促学生学习!

学习是根据阶段的,一个阶段必须考核通过,才能进入下一阶段。不能超阶段学习!

每个模块的视频是按照阶段进行的,不是随意看的!

项目架构

主站

使用vue.js + django rest framework的架构,前后端分离。全面采用https,前端和后端在同一台服务器(同域名同端口),避免跨域问题。

主站,注意是给学员使用的,用来购买课程,查看视频等....

里面没有退款按钮,但是有签订协议的。可以休学,延长时间。

退款,需要联系销售人员确认,跟进。为什么不能做到退款瞬时完成呢?因为有竞争对手,它会刷量。

账户的流入流出,是有手续费的。量大的话,会亏损的。

淘宝目前是7天退款,也是为了避免刷量。

导师后台

主要给导师使用的,账户金额,学员跟进...

管理后台

主要是运营使用,用来上传视频,编辑课程相关信息...

开发人员

ContractedBlock.gif

ExpandedBlockStart.gif

主站:-前端:- 前端姑娘 v1,vue.js 1.0

- 前端姑娘 v2,vue.js 2.0(目前全面使用2.0)-后端:-老村长-产品经理- alex/wu sir/文周

导师: 1人

管理后台:1人+ 兼职导师

View Code

二、django ContentType组件

请求头ContentType

ContentType指的是请求体的编码类型,常见的类型共有3种:

1. application/x-www-form-urlencoded

这应该是最常见的 POST 提交数据的方式了。浏览器的原生

表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据。请求类似于下面这样(无关的请求头在本文中都省略掉了)

ContractedBlock.gif

ExpandedBlockStart.gif

POST http://www.example.com HTTP/1.1Content-Type: application/x-www-form-urlencoded;charset=utf-8user=yuan&age=22

View Code

2. multipart/form-data

这又是一个常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让

表单的 enctype 等于 multipart/form-data。直接来看一个请求示例:

ContractedBlock.gif

ExpandedBlockStart.gif

POST http://www.example.com HTTP/1.1Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA------WebKitFormBoundaryrGKCBY7qhFd3TrwA

Content-Disposition: form-data; name="user"yuan------WebKitFormBoundaryrGKCBY7qhFd3TrwA

Content-Disposition: form-data; name="file"; filename="chrome.png"Content-Type: image/png

PNG ... content of chrome.png ...------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

View Code

这个例子稍微复杂点。首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 multipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着是内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。关于 multipart/form-data 的详细定义,请前往 rfc1867 查看。

这种方式一般用来上传文件,各大服务端语言对它也有着良好的支持。

上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段标准中原生

表单也只支持这两种方式(通过 元素的 enctype 属性指定,默认为 application/x-www-form-urlencoded。其实 enctype 还支持 text/plain,不过用得非常少)。

随着越来越多的 Web 站点,尤其是 WebApp,全部使用 Ajax 进行数据交互之后,我们完全可以定义新的数据提交方式,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值