昨日内容回顾
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/3
http://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/users
4. 名词(面向资源编程)
https://www.luffycity.com/api/v1/users
https://www.luffycity.com/api/v1/song
5. 行为
https://www.luffycity.com/api/v1/users
method:
get,获取
post,新建
put,更新
patch,局部更新
delete,删除
6. 条件
https://www.luffycity.com/api/v1/users?page=1
https://www.luffycity.com/api/v1/users?page=1&gender=2
7. 状态码
200
301
302
404
500
推荐使用code:
def xx(request):
ret = {'code':1000,'data':None}
try:
...
except Exptions as e:
ret['status'] = 1001
ret['error'] = 'xxxx错误'
return JsonResponse(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规范的API
5. django rest framework框架都有哪些组件(10)?
版本
权限
认证
节流
分页
解析器 ****
序列化 *****
视图 ****
路由
渲染器
补充:
http传输的数据是明文的,https传输的数据是加密的
简单情况下,使用status,1表示成功,0表示失败
复杂情况下,使用code,查看支付宝api的code说明
https://docs.open.alipay.com/common/105806
一般写接口的时候,推荐使用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天退款,也是为了避免刷量。
导师后台
主要给导师使用的,账户金额,学员跟进…
管理后台
主要是运营使用,用来上传视频,编辑课程相关信息…
开发人员
主站:
- 前端:
- 前端姑娘 v1,vue.js 1.0
- 前端姑娘 v2,vue.js 2.0(目前全面使用2.0)
- 后端:
- 老村长
- 产品经理
- alex/wu sir/文周
导师: 1人
管理后台:1人 + 兼职导师
二、django ContentType组件
请求头ContentType
ContentType指的是请求体的编码类型,常见的类型共有3种:
1. application/x-www-form-urlencoded
这应该是最常见的 POST 提交数据的方式了。浏览器的原生