面试准备5之rest-framework部分
rest-framework部分
1.你理解的Http协议?
答:1超文本协议,基于tcp协议的应用层协议,端口号80
本质就是一个socket客户端。请求--》响应--》断开
2 无连接无状态
解决无状态有cookie与session策略
3请求首行 请求头与请求体,请求头与请求体之间用双\r\n分隔
4 常用的状态码有
200:成功
301:临时重定向、302:永久重定向
403:crsf_token错误
500:服务器端错误
4常用的方法有get、post、put、patch、delete、options请求
5 重要的请求头有cookie、contenttype、useragent、referer(跳转源,防盗链使用)
请求体:发送post请求后,request.post只能接收urlencoded格式,无法获取ajax发送的请求,而request.body均可以拿到
1. django请求生命周期(包含rest framework框架)
wsgi-->中间件--->process_request--->process_匹配到url--->process_view--->执行视图--->process_template_response
2. 中间件是什么?,做过什么?
答:就是对请求执行前的操作部分,有内置的:csrf、session也有自定义的
答:做过:认证、权限、频率、session、静态文件、跨域等操作
3. csrf原理
请求是带着一个字符串,post请求时需要带着这个字符串
4. restful 10规范
1. restful 规范(10)---------------------
什么是接口?
- URL
- 约束
# 约束继承(实现)了他的类中必须含有IFoo中的方法
interface IFoo:
def func(self): pass class Foo(IFoo):
def func(self):
print(11111) 1. 根据method不同,进行不同操作
GET/POST/PUT/DELETE/PATCH
2. 面向资源编程
http://www.luffycity.com/salary 3. 体现版本
http://www.luffycity.com/v1/salary
http://www.luffycity.com/v2/salary https://v4.bootcss.com/
https://v3.bootcss.com/
4. 体现是API
http://www.luffycity.com/api/v1/salary
http://www.luffycity.com/api/v2/salary http://api.luffycity.com/v1/salary
http://api.luffycity.com/v2/salary
5. https
https://www.luffycity.com/api/v1/salary
https://www.luffycity.com/api/v2/salary 6. 响应式设置状态码
200
300
400
500
return HttpResponse('adfasdf',status=300) 7. 条件
https://www.luffycity.com/api/v2/salary?page=1&size=10 8. 返回值
https://www.luffycity.com/api/v2/salary
GET: 所有列表
{
code: 10000,
data: [
{'id':1,'title':'高亮'},
{'id':1,'title':'龙泰'},
{'id':1,'title':'小东北'},
]
} POST: 返回新增的数据
{'id':1,'title':'高亮'} https://www.luffycity.com/api/v2/salary/1/
GET: 获取单条数据
{'id':1,'title':'高亮'}
PUT:更新
{'id':1,'title':'高亮'}
PATCH: 局部更新
{'id':1,'title':'高亮'}
DELETE:删除 9. 返回错误信息
{
code: 100001,
error: 'xxx错误'
} 10. Hypermedia API
ret = {
code: 1000,
data:{
id:1,
name:'小强',
depart_id:http://www.luffycity.com/api/v1/depart/8/
}
} 建议大家使用restful规范
restful10条规范
5.restframework组件
路由--》视图--》版本---》认证--》权限--》频率--》解析器--》序列化--》分页--》-->渲染器
序列化:
1:一对一:字段指定source
2:choices字段:get_字段_display
3:一对多、多对多、反向查询:
chapter=serializers.SerializerMethodField()
def get_chapter(self, obj):
query = obj.course.chapter_set.all()
return [{'id': row.id, 'name': row.name} for row in query]
class CourseDetailSerializers(serializers.ModelSerializer):
# 一对一字段显示关联表字段-----------------------------
title=serializers.CharField(source='course.title')
course_img=serializers.CharField(source='course.course_img')
# 显示choices字段方法---------(get_字段_display)-----------------------------
choices=serializers.CharField(source='course.get_level_display')
# 多对多------第一步骤
recommends = serializers.SerializerMethodField()
# 一对多(显示章节)
chapter=serializers.SerializerMethodField() class Meta:
model = CourseDetail
fields = ['slogon','why','course','title','course_img','choices','recommends','chapter']
def get_recommends(self,obj):#多对多第二步骤
queryset=obj.recommend_courses.all()
return [{'id':row.id,'title':row.title} for row in queryset] def get_chapter(self, obj):
query = obj.course.chapter_set.all()
return [{'id': row.id, 'name': row.name} for row in query]
6.你的写的类都继承过哪些类?
class View(object): class APIView(View): class GenericAPIView(views.APIView): class GenericViewSet(ViewSetMixin, generics.GenericAPIView) class ModelViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet):
面试准备5之rest-framework部分的更多相关文章
- Spring 面试问题 TOP 50
Spring 面试问题 TOP 50 Spring Framework 现在几乎已成为 Java Web 开发的标配框架.那么,作为 Java 程序员,你对 Spring 的主要技术点又掌握了多少呢? ...
- windows类书的学习心得
原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...
- framework各版本新特性(为面试准备)
菜鸟D估计描述这些新特性的文章都是烂大街的货色,之所以拿出来分(e)享(xin)一下,有两个原因:1.当年面试的时候有人问到,我不知道该怎么回答:2.项目需要发布了,但是考虑到framework的版本 ...
- .NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?
什么是.NET?什么是.NET Framework? 本文将从上往下,循序渐进的介绍一系列相关.NET的概念,先从类型系统开始讲起,我将通过跨语言操作这个例子来逐渐引入一系列.NET的相关概念,这主要 ...
- 2016年8月ios面试问题总结
1.app分发方式 所谓分发方式简单点讲就是你的app都可以通过哪些途径给用户使用. a:个人或者公司的开发者账号 可以上传appStore,用户通过appStore下载. b:企业账号:打包分发. ...
- .Net程序员面试所需要的一些技术准备
夜已经很深了,但却毫无睡意,最近找工作和面试感触良多,所以想记录下来这段过程. 作为一个.Net程序员,不可否认是比JAVA要难混的.甚至在智联招聘或者大街网都没有.NET程序员的备用选项.真是令人悲 ...
- 由面试引发的思考:B/S与C/S究竟是何物
一.现状说明: 就在这金三银四的求职黄金时期,我有幸作为公司的独立技术面试官,拥有最终决定录用权,在倍受上级领导的充分信任下,我也向上级保证,一定要为公司找到合适的人才,就在我满怀信心的情况下面试了一 ...
- C#基础系列——再也不用担心面试官问我“事件”了
前言:作为.Net攻城狮,你面试过程中是否遇到过这样的问题呢:什么是事件?事件和委托的区别?既然事件作为一种特殊的委托,那么它的优势如何体现?诸如此类...你是否也曾经被问到过?你又是否都答出来了呢? ...
- .NET工程师面试宝典
.Net工程师面试笔试宝典 传智播客.Net培训班内部资料 这套面试笔试宝典是传智播客在多年的教学和学生就业指导过程中积累下来的宝贵资料,大部分来自于学员从面试现场带过来的真实笔试面试题,覆盖了主流的 ...
- asp.net c# 网上搜集面试题目大全(附答案)
1.String str=new String("a")和String str = "a"有什么区别? String str = "a"; ...
随机推荐
- SQL的CharIndex用法
和C#一样判断一个字符串中是否包含另一个字符串举例1:select charindex('test','This Test is test!!')->返回 6 (空格也算一个 下标从1开始)2: ...
- Tomcat部署项目的三种方式
目录 1.下载 Tomcat 服务器 2.启动并部署 Tomcat 服务器 3.Tomcat 的目录结构 4.部署项目的第一种方法(项目直接放入 webapps 目录中) 5.部署项目的第二种方法(修 ...
- WinForm之GDI画图步骤
Graphics g = this.CreateGraphics(); //这句是创建画布g,根据窗体得到窗体的画布 Pen p = new Pen(Color.Red, 2); //这句是创建一个红 ...
- SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)
网上查到的一些springboot内嵌的tomcat开启apr的文章,好像使用的springboot版本较老,在SpringBoot 2.0.4.RELEASE中已经行不通了.自己整理了一下,供参考. ...
- Android可见APP的不可见任务栈(TaskRecord)销毁分析
Android依托Java型虚拟机,OOM是经常遇到的问题,那么在快达到OOM的时候,系统难道不能回收部分界面来达到缩减开支的目的码?在系统内存不足的情况下,可以通过AMS及LowMemoryKill ...
- java中+=与+的区别
public class QQ { public static void main(String[] args) throws ParseException { byte val1 = 5; doub ...
- Comparison of Symbolic Deep Learning Frameworks
http://blog.revolutionanalytics.com/2016/08/deep-learning-part-1.html Deep Learning Part 1: Comparis ...
- CommandBehavior.CloseConnection有何作用
其用在ExecuteReader(c)中,返回对象前不能关闭数据库连接,须用CommandBehavior.CloseConnection: 这是一个关于实际知识点的问题,面试官考查的是应聘者数据库访 ...
- DataTable对象
DataTable表示一个内存中的关系数据表,可以独立创建和使用,也可以有其他.NET Framework对象使用,最常见的情况是作为DataSet的成员使用.DataTable对象由DataColu ...
- React条件性渲染
React条件性渲染的方式和Vue是不同的,之前用vue做项目时觉得vue是在是强大,通过v-if就可以选择性的渲染组件,另外,对于列表的渲染更是方便,一个v-for就可以进行快速的渲染,但是Reac ...