第三章 DRF之View进化论

View总览

Django+View+json [弃]

无法序列化日期类型

Django自带的最基础的View

path('study/grades', GradeListView.as_view()),

json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串

json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典

Django+View+model_to_dict[弃]

无法序列化图片格式,默认的不可修改的日期也不会被序列化,可修改的日期可以被序列化

Django+View+serializer

Django+View+JsonResponse

JsonResponse 接收的参数可以直接是字典类型的,这里的serializer会自动生成字符串类型的,因此需要将字符串再次转为字典才能给JsonResponse使用。这里只是演示。实际用HttpReponse更好。

返回的json_data

DRF+APIView+Serializer+Response

前面四种View都是Django自带的,从APIView开始都是 DRF的

Get方法返回的是Response,里面接受的参数是serializer.data

做个实验:

A把上面一节的JsonResponse替换成DRF的Response结果是错误的

B假如把这个Response替换成JsonResponce 结果还是可以用的

对于Response的官方解释:

REST framework 通过提供一个Response 类来支持 HTTP content negotiation,该类允许你返回可以呈现为多种内容类型的内容,具体取决于客户端的请求。

Response 类是 Django中SimpleTemplateResponse(继承了HttpResponse)类的一个子类。Response 对象用Python基本数据类型初始化。然后REST framework 使用标准的HTTP content negotiation 来确定如何呈现最终的响应内容。

你并不需要一定是用 Response 类,你可以从你的视图返回常规的 HttpResponse 或者 StreamingHttpResponse 对象。使用Response类只提供了一个可以呈现多种格式的更好的界面来返回 content-negotiated 的 Web API 响应。

除非由于某种原因你要对 REST

framework 做大量的自定义,否则你应该始终对返回对象的views使用 APIView 类或者 @api_view 函数。这样做可以确保视图在返回之前能够执行 content negotiation 并且为响应选择适当的渲染器

新建Grade

新建
新建后返回的对象

DRF+APIView+GetDetail/Update/Delete

上一节实现了对资源的列表查询以及创建

这一节补充剩下的3种操作获取单个资源详细信息、更新、删除

获取单个资源信息+修改+删除
grades5的url配置
高四一班详细信息
点击PUT修改
修改后结果

点击删除按钮,即可删除

DRF+GenericAPIView+mixins

Mixins里面提供了很多类,ListModelMixin提供了list方法。

GenericAPIView则提供了queryset属性以及序列化、分页类的指定

DRF+GenericAPIView子类实现增删改查

和APIView相比,基本不用怎么写代码,只是简单的写两行

DRF+ViewSet

ViewSet 继承自 APIView。你可以使用任何标准属性,如 permission_classes, authentication_classes 以便控制视图集上的 API策略。

ViewSet 类不提供任何操作的实现。为了使用ViewSet 类,你将重写该类并显式地定义动作实现。

ViewSet提供了路由router绑定的方式,并且将get put

post 等映射为retrieve update create

其配置方式为:

http://127.0.0.1:8000/study/grades0/

http://127.0.0.1:8000/study/grades0/1/

但是好像不支持自动分页

DRF+GenericViewSet+Mixins

GenericViewSet 类继承自GenericAPIView,并提供了 get_object, get_queryset 方法和其他通用视图基本行为的默认配置,但默认情况不包括任何操作。

总结

其种 GenericAPIView/GenericViewSet提供了Patch方法,ViewSet可以自己写patch方法

实际项目种尽量使用GenericViewSet+mixins  或者直接使用ModelViewSet

ViewSet/GenericViewSet 重写了as_view 方法,将HTTP的请求动作绑定到了具体的方法:

GET    grades/    list

GET    grades/1/  retrieve

POST  grades/      create

PUT    grades/1/  update

PATCH  grades/1/  partial_update

DELETE grades/1/  destroy


第一章 DRF概述

第二章 DRF安装与项目创建

第三章 DRF之View进化论

第四章 DRF之Router 和 Serializer

第五章 DRF权限分页查询排序访问限制

第六章 DRF Linux部署

第七章 DRF其他知识

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345