Django Rest framework基础使用之Request/Response

1、Request

  restframework提供了一个Request对象(rest_framework.request.Request)

  Request对象继承了Django默认的HttpRequest对象,它最核心的功能就是请求数据都包含在request.data属性中,类似于Django的request.POST,但是request.data应用范围更广:

    1)request.data:返回解析之后的请求体数据,类似于Django中标准的request.POST和request.FILES属性。

      request.data包含了解析之后的文件和非文件数据,包含了对POST PUT PATCH请求方式解析后的数据,利用了REST Framework的parsers解析器,不仅支持表单类型数据,也支持json数据

    2)request.query_params:

      与Django标准的request.GET相同

2、Response

  restframework提供了一个Response对象(rest_framework.response.Response), 它是TemplateResponse的一种

  

  参数说明:

    data:返回给前端的数据

    status:状态码,默认200

    template_name:模板名称,如果使用HTMLRenderer时需要指明

    headers:用于存放响应头信息的字典

    content_type:响应数据的content_type,通常无须传递此参数,REST Framework会根据前端请求所需类型数据来设置此参数

3、Status code

  rest_framework.views.Status

  反应了当前请求的成功与否的状态

4、API视图装饰器

  Restframework的API视图 有两种实现方式:

  一种是基于函数的:@api_view

  一种是基于类的:APIView

  1)@api_view

    使用@api_view装饰器,使得我们此处的Request不在是Django标准的HttpRequest,而是restframework的Request。

    默认情况下,只有GET请求会被接收,它也允许我们自己配置函数允许接收的请求类型

    @api_view():默认只接收GET请求

    @api_view(http_method_names=[‘GET‘]):指明接收的请求类型

    @api_view([‘GET‘, ‘POST‘]):接收get post请求

    @api_view

    def Snippet_list(request):

      if request.method=="GET":

        ...

        pass

      elif request.method == "POST":

        ...

        pass

  2)APIView

    APIView是基于类的装饰器,显然,类视图更符合面向对象的原则,它支持GET POST PUT DELETE等请求类型,且各种类型的请求之间,有了更好的分离

    class Snippet_list(APIView):

      def get(self, request):

        ...

        pass

      def post(self, request):

        ...

        pass

    

原文地址:https://www.cnblogs.com/fiona-zhong/p/9687638.html

时间: 2024-08-29 21:21:29

Django Rest framework基础使用之Request/Response的相关文章

Django rest framework 基础

1.1 什么是RESTful 1. REST与技术无关,代表的是一种软件架构风格(REST是Representational State Transfer的简称,中文翻译为“表征状态转移”) 2. REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识 3. 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性 4. 对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资

Django REST framework基础:视图和路由

在原来modelserializers基础上进行了一次封装方便了使用 # author class AuthorModelSerializers(serializers.ModelSerializer): class Meta: model = models.Author fields = "__all__" from rest_framework import mixins from rest_framework import generics class AuthorView(mi

Django Rest framework基础使用之 serializer

rest-framework文档地址:http://www.django-rest-framework.org/ 1.安装:pip install djangorestframework 说明:如果安装coreapi的时候,出现utf-8报错,可以将虚拟环境中的Lib---->site package--->pip--->compat---__init__.py中的第75行return s.decode("utf-8")改为"gbk",然后unin

【转】对Django框架架构和Request/Response处理流程的分析

本文转载于疯狂的蚂蚁. 一. 处理过程的核心概念 如下图所示django的总览图,整体上把握以下django的组成: 核心在于中间件middleware,django所有的请求.返回都由中间件来完成. 中间件,就是处理HTTP的request和response的,类似插件,比如有Request中间件.view中间件.response中间件.exception中间件等,Middleware都需要在 "project/settings.py" 中 MIDDLEWARE_CLASSES 的定

Django rest framework 使用自定义认证方式

Django rest framework 使用自定义认证方式 Django使用自定义认证方式 介绍了 "Django使用自定义认证方式",这一篇说说怎样在前一篇的基础上提供rest api. 修改settings.py中INSTALLED_APPS,添加 'login' app. 给login app增加serializers.py文件 #coding:utf-8 from django.contrib.auth.models import User from rest_framew

Django Rest framework序列化流程

目录 一 什么是序列化 二 Django REST framework配置流程之Serializer 三 Django REST framework配置流程之ModelSerializer 一 什么是序列化 序列化模型与序列化关系模型 序列化模型,顾名思义,即对 models 里的数据模型作序列化. 而序列化关系模型则是对 models 里数据模型中带有关系的如 ForeignKey, ManyToManyField 和 OneToOneField 字段作序列化. Django Rest Fra

Django REST Framework API Guide 03

本节大纲 1.Routers 2.Parsers 3.Renderers Routers Usage from rest_framework import routers router = routers.SimpleRouter() router.register(r'users', UserViewSet) router.register(r'accounts', AccountViewSet) urlpatterns = router.urls register的两个必填参数prefix,

Django REST Framework剖析

一.简介 Django REST Framework(简称DRF),是一个用于构建Web API的强大且灵活的工具包. 先说说REST:REST是一种Web API设计标准,是目前比较成熟的一套互联网应用程序的API设计理论. Fielding将他对互联网软件的架构原则,定名为REST,即Representational State Transfer的缩写.我对这个词组的翻译是"表现层状态转化".如果一个架构符合REST原则,就称它为RESTful架构.所以简单来说,RESTful是一

Django rest framework源码分析(一) 认证

一.基础 最近正好有机会去写一些可视化的东西,就想着前后端分离,想使用django rest framework写一些,顺便复习一下django rest framework的知识,只是顺便哦,好吧.我承认我是故意的,因为我始终觉得,如果好的技术服务于企业,顺便的提高一下自己.大家都很开心不是不.再次强调一下,真的只是顺便. 安装吧 pip install djangorestframework 1.2.需要先了解的一些知识 理解下面两个知识点非常重要,django-rest-framework