ITPub博客

首页 > 应用开发 > > 详解使用restframwork api 实现各类http请求

详解使用restframwork api 实现各类http请求

作者:wyfem 时间:2019-08-19 16:06:36 0 删除 编辑

详解使用restframwork api 实现各类http请求

restframwork api+序列化能相当方便的处理各类http请求和数据处理,本文先介绍http的相关操作。

主要结构还是原来django的MTV,由于提供的是api服务,此处只有MV,而且Models主要跟序列化有关,所以本文主要讲View如何接受请求并且返回指定的数据。

urls.py

#rest相关地址定义

from rest_framework import routers

router = routers.DefaultRouter()

router.register(r'envinfo', Env_InfoViewSet, base_name='env')

#原来的django路由

urlpatterns = []

urlpatterns += [

url(r'', include(router.urls)),

]

views,基础配置

from rest_framework import viewsets

from rest_framework.response import Response

from django.http.response import JsonResponse

from rest_framework.filters import SearchFilter

import django_filters

class Env_InfoViewSet(viewsets.ModelViewSet):

filter_backends = (django_filters.rest_framework.DjangoFilterBackend, SearchFilter)  # 定义后端查询使用的方法

filter_fields = ('id', 'name')  # 查询可以过滤的字段

search_fields = ('name',)  # 搜索字段,模糊匹配

def get_serializer_class(self):        #  指定序列化,包含数据库的表

return self.get_serializer()

def get_queryset(self): # 定义每页展示条目,用于返回分页信息,并且返回所有表记录,用于查询

page_size = 15

if self.request.GET.get('page_size'):

page_size = self.request.GET.get('page_size')

self.pagination_class.page_size = page_size

return self.get_model().objects.all()

这样就可以实现单表的增删改查了,可以根据各自业务需求重写

解析下viewsets.ModelViewSet函数  

继承了  mixins.CreateModelMixin,        create方法,创建表记录        --- post    传递参数为request.data

mixins.RetrieveModelMixin,      retrieve方法,检索指定表记录     --- get     用于检索指定id的表记录,url最后带id值

mixins.UpdateModelMixin,        update方法,更新表记录        --- put     传递参数为request.data 

mixins.DestroyModelMixin,       destroy方法,删除表记录  --- delete  传递参数为request.data

mixins.ListModelMixin,          list方法,检索表记录 --- get 传递参数为request.query_params

GenericViewSet,                 基础函数

这样通过重新继承这些方法可以限制指定的方法,实现http method的控制。 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2894/viewspace-3155235/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-22

  • 博文量
    73
  • 访问量
    33675