首页 > 其他分享 >drf视图中调用的请求和响应类

drf视图中调用的请求和响应类

时间:2022-10-24 17:22:46浏览次数:87  
标签:status 调用 request rest framework 视图 import drf

drf视图中调用的请求和响应类

8.1 request

如果使用视图的时候使用的是drf中的视图(如:APIView),而不是django的视图(View),那么视图中调用的请求对象request不再是原来的request,下面给出示例:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status


class StudentAPIView(APIView):
    def get(self, request):
        print(f"request={request}")
        return Response({"message":"ok"}, status=status.HTTP_201_CREATED)

打印结果如下:

request=<rest_framework.request.Request: GET '/req/students/'>

接下来使用django的view:

from django.views import View
from django.http import HttpResponse


class StudentAPIView(View):
    def get(self, request):
        # print(f"data={request.data}")
        print(f"request={request}")
        return HttpResponse("OK")

打印结果如下:

request=<WSGIRequest: GET '/req/students/'>

由此可见drf和django视图中的request是不一样的,他们俩并不是一个,接下来介绍以下,drf视图中如何拿到前端提交的数据:

视图代码:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status


class StudentAPIView(APIView):
    def get(self, request):
        print(f"data={request.data}")
        return Response("OK",status=status.HTTP_201_CREATED)

前端提交数据如下:

{
    "name":"liming",
    "age":18,
    "sex":"男"
}

打印结果如下:

data={'name': 'liming', 'age': 18, 'sex': '男'}

另外如果是get请求,在网址上传递数据的话,可以用request.query_params来接受数据

视图如下:

from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status


class StudentAPIView(APIView):
    def get(self, request):
        print(f"data={request.query_params}")
        return Response({"message": "ok"}, status=status.HTTP_201_CREATED)

请求接口如下:

127.0.0.1:8000/req/students/?name=liming

打印结果如下:

data=<QueryDict: {'name': ['liming']}>

8.2 response

在drf视图中建议使用drf的Response来响应客户端,他会把字典自动转换为json数据,另外还带有api调试页面,效果如下:

x2TC6K.png

标签:status,调用,request,rest,framework,视图,import,drf
From: https://www.cnblogs.com/minqiliang/p/16822151.html

相关文章

  • 使用DRF实现五个api接口
    使用DRF实现五个api接口2.1新建appdjango-adminstartappapp012.2配置环境#注册app01和rest_framework,由于drf提供了web调试界面,所以静态文件功能不能注释掉,不然......
  • 调用layer内部js方法
    调用layer内部名为Func的方法$("#layui-layer-iframe"+layerId)[0].contentWindow.Func();获取layerIdlayerId=layer.open({type:2,......
  • APP调用微信接口安全方案设计
    针对AppID、AppSecret账号信息泄露的情况,设计的安全方案。其实前后端交互都可以做参考,尤其是有App客户端的情况下,如果是直接把重要的账号信息直接放到使用者设备上,是非常危......
  • nVisual二次开发——关于视图内对象的获取
    nVisual作为一个图形化管理软件,首要的是将视图内对象渲染出来,对象渲染的数据来源于diagram接口,本章小编带大家了解这个接口。​接口描述:传入视图节点id,获取视图属性、视图背......
  • Http2服务调用(5G核心网)
    Http2服务调用(5G核心网)一.HTTP2使用http协议的人越来越多。http1.1的弊端慢慢都被显现出来。1)浏览器方式一些网站频繁发送请求,造成一家独大其他网站无法使用。或者所......
  • Android 系统调用拦截hook
    本文ASOP源码版本8.1,下面是相关改动文件Changesnotstagedforcommit:(use"gitadd/rm<file>..."toupdatewhatwillbecommitted)(use"gitcheckout--<......
  • java后台远程调用获取文件
    模拟本地服务为文件服务器(两种提供方式):假设本地文件为服务器,提供文件获取服务方法一:直接将输出流放入response里面作为响应@RequestMapping(value="/getUrlDownload",m......
  • destoon列表中调用tag标签
    destoon列表中调用tag标签。1、打开文件api/extend.func.php,在文件最后添加函数:functionhot_tag($tag){$tag=explode('',$tag);return$tag;}2、在列表......
  • destoon实现调用热门关键字的方法
    destoon调用热门关键字的方法是根据数据库里面的保存的搜索的关键字来显示的。每个模块下面都有各自的关键字下面是调用的标签:<!--{tag("moduleid=$searchid&table=keywor......
  • 获取方法和调用方法
    packagecom.liu.test03;importjava.lang.annotation.Annotation;importjava.lang.reflect.InvocationTargetException;importjava.lang.reflect.Method;importj......