python django restframework,django rest framework中文文档

  python django restframework,django rest framework中文文档

  本文主要介绍Django的restframework接口框架定制返回数据格式,本文介绍如何通过定制Django的restframework接口框架的Response返回对象来定制返回数据格式。本文通过示例代码非常详细的介绍给大家,有需要的朋友可以参考一下。

  在前端分离是大趋势的背景下,前端访问数据是通过调用后端接口获取数据微服务的应用越来越多。Django是Python的web应用开发常用的web框架。web应用框架使用Django框架减少了很多工作。通常情况下,添加、删除、更改和检查数据等业务应用可以通过少量代码来实现。使用Django的restframework向外界发布接口也非常简单方便。只有几行代码可以通过接口为数据对象提供服务。由于接口返回的数据在实际开发过程中是有一定格式的,本文介绍了如何通过定制响应返回对象来定制接口返回的数据格式。

  以下示例通过restframework框架发布数据对象Friend。

  只需定义朋友数据对象。

  类友(BaseModel):

  id=型号。AutoField(primary_key=True)

  站点名称=models . charfield(max _ length=20,verbose _ name=朋友链站点名称)

  path=models . charfield(max _ length=100,verbose _ name= address path )

  Desc=models.charfield(最大长度=200,详细名称=描述)

  def __str__(self):

  返回self.siteName

  Meta:级

  Verbose_name=朋友链

  Verbose_name_plural=朋友链

  定义一个序列化类来序列化返回的字段。

  类FriendModelSerializer(serializer。模型序列化程序):

  Meta:级

  模特=朋友

  fields=__all__

  定义一个接口视图类来获取数据。

  类FriendView(视图集。ModelViewSet):

  queryset=Friend.objects.all()

  serializer _ class=FriendModelSerializer

  定义接口路由,可以通过httprestfull的接口访问。

  friend _ list=视图。friendview . as _ view({ get : list ,})

  urlpatterns=[

  path(friend/,friend_list),

  ]

  界面访问效果如下:

  http://localhost :8000/API/friend/

  但是项目中经常改变接口格式,restframework默认的返回数据格式不符合应用的需求。例如,通用接口将具有由接口返回的代码、消息和数据。code用于标识接口返回的代码。比如200是正常的,msg用来记录异常或其信息,data用来返回特定的数据。

  通过restframework接口自定义返回的数据格式也非常简单方便。

  先自定义响应返回对象,在返回对象中自定义数据返回格式。示例代码如下:

  从rest_framework.response导入响应

  从rest _ framework.serializers导入序列化程序

  类别CustomResponse(Response):

  def __init__(self,data=None,code=None,msg=None,

  状态=无,

  template_name=None,headers=None

  exception=False,content_type=None,**kwargs):

  超级()。__init__(无,状态=状态)

  if isinstance(数据,序列化程序):

  消息=

   (

   You passed a Serializer instance as data, but

   probably meant to pass serialized `.data` or

   `.error`. representation.

   )

   raise AssertionError(msg)

   #自定义返回格式

   self.data={code:code,msg:msg,data:data}

   self.data.update(kwargs)

   self.template_name=template_name

   self.exception=exception

   self.content_type=content_type

   if headers:

   for name, value in headers.items():

   self[name] = value

  

  在接口接口视图类获取数据返回时,使用该自定义的Response返回对象。

  

class FriendView(viewsets.ModelViewSet):

 

  接口访问效果如下:
可以看到返回数据格式中增加了code,msg 数据放到了data节点

  

 

  列表数据通常接口要提供翻页功能,在接口中要有总页数、当前页、是否有下一页的信息。
可以自定义一个分页器,在分页器中自定义需要返回的分页参数
参考示例代码如下:

  

from rest_framework import status

 

  在接口接口视图类获取数据返回时,如果有分页器则使用该分页器自定义的Response返回对象。

  

class FriendView(viewsets.ModelViewSet):

 

  接口访问效果如下:
可以看到接口中自定义增加了分页信息。

  

 

  但是有时候可能希望分页的信息数据要放在data节点里面,这样也是可以做到的。

  

from rest_framework import status

 

  接口访问效果如下:
可以看到接口中自定义增加了分页信息,分页的信息数据放在data节点里面了

  

 

  至此,本文介绍了通过Django的restframework接口框架自定义Response返回对象来自定义返回数据格式。Django的restframework接口框架使用简单方便,拿来即用,能够很大程度上减少代码开发量。

  到此这篇关于Django的restframework接口框架自定义返回数据格式的文章就介绍到这了,更多相关Djangorestframework自定义返回数据格式内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: