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

本文详述了如何利用restframework API结合序列化处理HTTP请求,特别是如何在Django中实现模型视图集(ModelViewSet)的功能,包括增、删、改、查操作,并通过重写方法进行权限控制。
摘要由CSDN通过智能技术生成
详解使用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的控制。










  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值