基于DRF的增删改查操作

您所在的位置:网站首页 drf架构 基于DRF的增删改查操作

基于DRF的增删改查操作

2023-07-15 06:02| 来源: 网络整理| 查看: 265

基 于 D R F 的 增 删 改 查 操 作 基于DRF的增删改查操作 基于DRF的增删改查操作 一 APIView from django.urls import path from .views import PersontView app_name = 'classview' urlpatterns = [ # 列表: /person/ get # 新增: /person/ post # 详情: /person/[pk]/ get # 修改: /person/[pk]/ put # 删除: /person/[pk]/ delete path('person/',PersontView.as_view()), path('person//',PersontView.as_view()), ] from rest_framework.views import APIView from django.http import Http404 from rest_framework.response import Response from apps.drf_demo.models import Person from .serializers import PersonSerializer from rest_framework import status class PersontView(APIView): """ 检索, 更新和删除一个merchant实例对象. """ def get_object(self, pk): try: return Person.objects.get(pk=pk) except Person.DoesNotExist: raise Http404 def get(self, request, pk=None): if pk: merchant= self.get_object(pk) serializer = PersonSerializer(merchant) return Response(serializer.data) else: queryset = Person.objects.all() serializer = PersonSerializer(instance=queryset,many=True) return Response(serializer.data) def put(self, request, pk): merchant = self.get_object(pk) serializer = PersonSerializer(merchant, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def delete(self, request, pk): merchant= self.get_object(pk) merchant.delete() return Response(status=status.HTTP_204_NO_CONTENT) 二 QuerySet使用 filterexcludeannotateorder_byvaluesvalues_listallselect_relatedprefetch_relateddeferonlygetcreateget_or_createbulk_createcountexistsdistinctupdatedelete 三 补充: DRF中的Request和Response对象

在drf中,可以使用 Request和 Response对象来替代 django内置的 HttBRequest和 HttpResponse。替代 django的对象有很多好处。以下进行简单讲解。

Request对象:

DRF 的 Request对象是从HttpRequest中拓展出来的,但是增加了一些其他的属性。其中最核心的用得最多的属性便是request.data 。request.data 比 request.POST更加灵活:

request.POST :只能处理表单数据,获取通过POST方式上传上来的数据。request.data :可以处理任意的数据。可以获取通过POST 、PUT 、PATCH 等方式上传上来的数据。request.query_params :查询参数。比 request.GET更用起来更直白。 Response对象:

Response可以自动的根据返回的数据类型来决定返回什么样的格式。并且会自动的监听如果是浏览器访问,那么会返回这个路由的信息。

@require_http_methods(['GET','POST']) def category(request): if requesthod =="GET": queryset = GoodsCategory.objects.all() serializer = GoodsCategorySerializer(instance=queryset,many=True) return JsonResponse(serializer.data,safe=False) else: serializer = GoodsCategorySerializer(data=request.POST) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data, status=200) else: return JsonResponse(serializer.errors, status=400) 状态码

在这里插入图片描述

在这里插入图片描述 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3