位置: 编程技术 - 正文

django rest framework之请求与响应(详解)(django rest framework和django区别)

编辑:rootadmin

推荐整理分享django rest framework之请求与响应(详解)(django rest framework和django区别),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:django rest framework教程,django rest framework 认证,django rest framework聚合查询,django rest framework教程,django rest framework 权限验证自定义,django rest framework 认证,django rest framework 权限验证自定义,django rest framework教程,内容如对您有帮助,希望把文章链接给更多的朋友!

前言:在上一篇文章,已经实现了访问指定URL就返回了指定的数据,这也体现了RESTful API的一个理念,每一个URL代表着一个资源。当然我们还知道RESTful API的另一个特性就是,发送不同的请求动作,会返还不同的响应,这篇文章就讲一下django-rest-framework这个工具在这方面给我们带来的便捷操作。

一、Request对象

平时我们在写Django的视图函数的时候,都会带上一个request参数,这样就能处理平时搭建网站时,浏览器访问网页时发出的常规的HttpRequest。但是现在我们导入了django-rest-framework,它能够对request进行拓展,并且提供更灵活的请求解析。这个特性体现在哪呢?请看下面这个例子:

request.POST只能处理前端发起的POST请求,只能处理表单提交的数据。而request.data可以处理任意数据,而不单单是前端提交的表单数据,可用于post, put, patch请求。

二、Response对象

和request对象一样,django-rest-framework也对其进行了很实用的拓展,在我上一篇文章的snippets/views.py中,我们导入了JsonResponse用于返回json格式的响应,在视图函数中是这样的:

也就是说,在return的时候就需要指明json格式,这样显得很不实用而且很单一,所以经过拓展后的Reponse对象就很方便了,它会根据客户端的请求头部信息来确定正确的内容类型以返回给客户端。只需如下代码:

三、状态码

我们知道发送http请求时会返回各种各样的状态吗,但是都是简单的数字,比如、等,这些纯数字标识符有时候可能不够明确或者客户端在使用的时候不清楚错误信息甚至是没注意看不到,所以django-rest-framework也对此进行了优化,状态码会是HTTP__BAD_REQUEST、HTTP__NOT_FOUND这种,极大的提高可读性

四、包装API视图

REST框架提供了两个可用于编写API视图的包装器。

django rest framework之请求与响应(详解)(django rest framework和django区别)

&#;@api_view装饰器用于处理基于函数的视图

&#;APIView类用在基于视图的类上

这些包装提供了一些功能,让我们省去很多工作。比如说确保你在视图中收到Request对象或在你的Response对象中添加上下文,这样就能实现内容通信。

另外装饰器可以在接收到输入错误的request.data时抛出ParseError异常,或者在适当的时候返回 Method Not Allowed状态码。

五、Pulling it all together(使用)

Okay, let's go ahead and start using these new components to write a few views.

We don't need our JSONResponse class in views.py any more, so go ahead and delete that. Once that's done we can start refactoring(重构) our views slightly.

在views.py文件中我们不再需要我们的JSONResponse类,所以继续删除。一旦完成,我们可以开始细微地重构我们的视图。

可以看出,经过改进的代码已经把上面所说的几个django-rest-framework带来的特性都应用起来了,我们可以看出程序代码量变少,并且能处理的情况更多了。 比如说,在原本的视图函数snippet_detail中,处理'PUT'请求的时候,需要先解析前端发来的json格式的数据再进一步处理:

也就是说需要分成两步实现,而且这里有一个限制就是只能解析json格式的数据流。而改进后的程序只需一行代码:

request.data can handle incoming json requests, but it can also handle other formats. Similarly we're returning response objects with data, but allowing REST framework to render the response into the correct content type for us.

request.data就可以获取到提交过来的数据了,并且可以处理各种数据和各种请求动作,方便了开发。还有在return的时候也不需要指定json格式了,由原本的:

改成了

这也意味着返回给客户端的可以是json或者html等格式的内容,返回HTML格式的内容的话,会在浏览器返回经过渲染的、更美观的页面。同时可以看出状态码也改进成了django-rest-framework给我们带来的可读性更高的状态标识码,以上这些措施都很大程度的提高了对客户的友好度。

对于另一个视图函数的修改也是同样的原理,这里就不做同样的讲解了,代码如下:

标签: django rest framework和django区别

本文链接地址:https://www.jiuchutong.com/biancheng/372171.html 转载请保留说明!

上一篇:基于python中的TCP及UDP(详解)(python tcp socket)

下一篇:Python如何实现MySQL实例初始化详解(python中myf)

  • 房地产业所得税
  • 普通发票作废要收回吗
  • 小规模公司的外汇业务
  • 主营业务收入借方发生额表示什么
  • 冲减营业税金及附加的分录
  • 汇算清缴补交税款,怎么调整报表教程
  • 法人转入公司的资金怎么做账
  • 个人购买商业保险怎么抵扣个税
  • 应收账款售让会计分录怎么写?
  • 单位班车费用是福利费吗
  • 未使用房子需要交物业费嘛
  • 旅行社差额征收怎么做账
  • 进项税额转出后企业所得税怎么处理?
  • 2020年购进农产品的扣除率
  • 出让方式取得土地使用权会计处理
  • 企业如何实现资源共享
  • 万元的票可以开到多大金额
  • 代扣车船税的手续有哪些
  • 材料销售的账务处理
  • 预提租赁费会计处理
  • 旅行社开的发票是否都要差额征税
  • 公司收到残联补助如何开票
  • 网络共享每次都要输入密码
  • 如何将win11笔记本连接到家庭打印机上
  • 民办非企业的注册资金最低限额
  • Linux怎么使用vi
  • 员工油费补贴过期怎么办
  • linux用不了yum
  • macOS 11 Big Sur 开发者预览版 Beta 7正式推送
  • 企业的股息红利所得
  • 月初红字冲回估价入账存货借贷
  • css实现轮播图侧边阴影效果
  • 普莱斯德
  • 发票密码什么意思
  • 建筑修缮服务税率
  • 应收票据是借还是贷
  • uniapp下拉
  • 命令启动服务管理
  • 对外长期投资会计分录?
  • 日记账对方科目是什么意思
  • 普通发票不满8项怎么开明细
  • 用于职工福利的进项税账务处理
  • 企业低值易耗品的摊销方法有
  • 公司注销之前需要做些什么
  • 金蝶专业版数量金额明细账设置
  • 房地产企业所得税管理办法
  • 二手车需要交什么
  • ETC通行费发票抵扣2021新规定
  • 七天年化收益率2%
  • 限制性股票应纳税额的确定
  • 研发部门的房租可以资本化
  • 员工报销的差旅费会计分录
  • 收到国外客户的货款怎么做账
  • 如何做好应收应付会计
  • 公司支付给实习生的报酬如何税前扣除?
  • 其他应收款坏账准备计提标准
  • 金蝶凭证做错了已经入账怎么更正
  • sql server怎么使用sql语句
  • 请问linux
  • linux三个主要部分及功能
  • xp系统的程序和功能在哪里
  • macbookpro客人用户
  • prevsrv.exe - prevsrv是什么进程 有什么用
  • windows8怎么新建word文档
  • win7设置宽带拨号
  • linux %1
  • div滚动条怎么设置
  • css中的div怎么运用
  • firefox允许弹出窗口
  • css旋转木马
  • jquery.js插件
  • angularjs1.5
  • js自动切换图片效果
  • 如何查询发票代码和发票号码
  • 四川省税务局税费服务支持中心工作人员编制
  • 酒店访客时间是几个小时
  • 中国税务网官网1732171695993732.2418.61431871
  • 辽宁网上税务
  • 010是哪个市区的电话号码
  • 电力营销岗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设