Django REST framework(五)-http请求与响应

FastAPI(54)- 详解 Request 请求对象 背景 前面讲了可以自定义 Response,那么这里就讲下请求对象 Request 可以通过 Request 来获取一些数据 获取请求基础信息 @app.get("/base") async def get_base(*, request: Request): res = { # 客户端连接的 host "host": request.client.... 阅读详情

drf除了在数据序列化部分简写代码以外,在请求和响应也简化了一些步骤

rest_framework.response.Request:通过parser解析类 识别客户端请求头中的Content-Type来完成数据转换成->类字典(QueryDict,字典的子类)

rest_framework.response.Response:通过renderer渲染类 识别客户端请求头的"Accept"来提取客户端期望的返回数据格式,-> 转换成客户端的期望格式数据


一、请求Request

rest_framework.response.Request

1、常用属性

1)data

request.data 返回解析之后的请求体数据。类似于Django中标准的request.POST和 request.FILES, request.body属性,但提供如下特性:

  • 包含了解析之后的文件和非文件数据

  • 包含了对POST、PUT、PATCH请求方式解析后的数据

  • 利用了REST framework的parser解析器,不仅支持表单类型数据,也支持JSON数据等

2)query_params

query_params,查询参数,也叫查询字符串(query string )

request.query_params与Django标准的request.GET相同,只是更换了更正确的名称而已。

3)request.stream

获取django标准的request对象


2、基本使用

Django内置request

import json

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


class DjangoView(View):
    def get(self, request):
        # 解析json数据
        json_dict = json.loads(request.body.decode())
        print(request)
        #<WSGIRequest: GET '/djangoview/'>
        print(json_dict)
        #{'request': 'django-request', 'response': 'django-response'}
        return HttpResponse('ok')

说明:

        默认情况下, 编写视图类时,如果继承的是django内置的django.view.View视图基类,则视图方法中得到的request对象,是django默认提供的django.core.handlers.wsgi.WSGIRequest这个请求处理对象,无法直接提供的关于json数据数据处理。在编写api接口时很不方便,所以drf为了简写这块内容,在原来的HttpRequest的基础上面,新增了一个Request对象这个Request对象是单独声明的和原来django的HttpRequest不是父子关系。
同时注意:

        要使用drf提供的Request请求处理对象,必须在编写视图类时继承drf提供的视图基类
from rest_framework.views import APIView

        如果使用drf提供的视图基类APIView编写类视图,则必须使用来自drf提供的Request请求对象和Response响应对象

 Drf request

from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.views import APIView


class DrfView(APIView):
    def get(self, request):
        print(request)
        # <rest_framework.request.Request: GET '/drfview/'>

        data = request.data  # 根据Content-Type的值,自动解析类型
        print(data)
        # {'request': 'django-request', 'response': 'django-response'}

        query_params = request.query_params.get('type')
        print(query_params)
        # drfview

        print(request.stream)
        # <WSGIRequest: GET '/drfview/'>
        return Response('ok')  # 根据Accepts的值,自动渲染类型

二、请求Response

rest_framework.response.Response

        使用rest_framework.response.Response该类构造响应对象时,响应的具体数据内容会被转换(renderer渲染器)成符合前端需求的类型。

        REST framework提供了Renderer 渲染器,用来根据请求头中的Accept(接收数据类型声明)来自动转换响应数据到对应格式。如果前端请求中未进行声明Accept,则会采用Content-Type方式处理响应数据,我们可以通过配置来修改默认响应格式。

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (  # 默认响应渲染类
        'rest_framework.renderers.JSONRenderer',  # json渲染器,返回json数据
        'rest_framework.renderers.BrowsableAPIRenderer',  # 浏览器API渲染器,返回调试界面
    )

}

 1、构造方式

Response(data, status=None, template_name=None, headers=None, content_type=None)

        1)drf的响应处理类和请求处理类不一样,Response就是django的HttpResponse响应处理类的子类。

        2)data数据不要是render处理之后的数据,只需传递python的内建类型数据即可,REST framework会使用renderer渲染器处理data。

        3)data不能是复杂结构的数据,如Django的模型类对象,对于这样的数据我们可以使用Serializer序列化器序列化处理后(转为了Python字典类型)再传递给data参数。

参数说明:

  • data: 为响应准备的序列化处理后的数据;

  • status: 状态码,默认200;

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

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

  • content_type: 响应数据的Content-Type,通常此参数无需传递,REST framework会根据前端所需类型数据来设置该参数。


2、常用属性 

1).data

传给response对象的序列化后,但尚未render处理的数据

2).status_code

状态码的数字

3).content

经过render处理后的响应数据


3、状态码

1)信息告知 - 1xx

HTTP_100_CONTINUE
HTTP_101_SWITCHING_PROTOCOLS

2)成功 - 2xx

HTTP_200_OK
HTTP_201_CREATED
HTTP_202_ACCEPTED
HTTP_203_NON_AUTHORITATIVE_INFORMATION
HTTP_204_NO_CONTENT
HTTP_205_RESET_CONTENT
HTTP_206_PARTIAL_CONTENT
HTTP_207_MULTI_STATUS

3)重定向 - 3xx

HTTP_300_MULTIPLE_CHOICES
HTTP_301_MOVED_PERMANENTLY
HTTP_302_FOUND
HTTP_303_SEE_OTHER
HTTP_304_NOT_MODIFIED
HTTP_305_USE_PROXY
HTTP_306_RESERVED
HTTP_307_TEMPORARY_REDIRECT

4)客户端错误 - 4xx

HTTP_400_BAD_REQUEST
HTTP_401_UNAUTHORIZED
HTTP_402_PAYMENT_REQUIRED
HTTP_403_FORBIDDEN
HTTP_404_NOT_FOUND
HTTP_405_METHOD_NOT_ALLOWED
HTTP_406_NOT_ACCEPTABLE
HTTP_407_PROXY_AUTHENTICATION_REQUIRED
HTTP_408_REQUEST_TIMEOUT
HTTP_409_CONFLICT
HTTP_410_GONE
HTTP_411_LENGTH_REQUIRED
HTTP_412_PRECONDITION_FAILED
HTTP_413_REQUEST_ENTITY_TOO_LARGE
HTTP_414_REQUEST_URI_TOO_LONG
HTTP_415_UNSUPPORTED_MEDIA_TYPE
HTTP_416_REQUESTED_RANGE_NOT_SATISFIABLE
HTTP_417_EXPECTATION_FAILED
HTTP_422_UNPROCESSABLE_ENTITY
HTTP_423_LOCKED
HTTP_424_FAILED_DEPENDENCY
HTTP_428_PRECONDITION_REQUIRED
HTTP_429_TOO_MANY_REQUESTS
HTTP_431_REQUEST_HEADER_FIELDS_TOO_LARGE
HTTP_451_UNAVAILABLE_FOR_LEGAL_REASONS

5)服务器错误 - 5xx

HTTP_500_INTERNAL_SERVER_ERROR
HTTP_501_NOT_IMPLEMENTED
HTTP_502_BAD_GATEWAY
HTTP_503_SERVICE_UNAVAILABLE
HTTP_504_GATEWAY_TIMEOUT
HTTP_505_HTTP_VERSION_NOT_SUPPORTED
HTTP_507_INSUFFICIENT_STORAGE
HTTP_511_NETWORK_AUTHENTICATION_REQUIRED

     


FastAPI系列教程05:FastAPI请求(request) Request是FastAPI针对客户端请求信息提供的访问接口,因此要更简便地处理请求信息可以使用Request,而要更个性话地处理请求信息可以直接访问ASGI scope和receive channel。 阅读详情

相关推荐

Django REST framework API开发

REST介绍RESTful API 设计实现API的两种方式FBV 视图函数urlpatterns = [ url(r'^user/$', views.user), url(r'^user/add/$', views.user_add), url(r'^user/edit/(\d+)/$', views.user_edit), url(r'^user/del/(\d+

Ayhan_huang的博客 4717

请求和响应

Request 如果你正在做基于REST的Web服务,你最好忽略request.POST和request.GET REST framework的Request类扩展了标准的HttpRequest,添加对REST framework的灵活请求解析和请求身份验证的支持。 请求解析 REST framework的请求对象提供灵活的请求解析,允许你以与通常处理表单数据相同的方式使用JSON数据或其他媒...

me17shou的博客 895

【Python】Django REST framework (DRF)

有时我们需要自定义字段的处理逻辑,这时可以创建自定义字段。"""年龄字段根据生日计算年龄""""""将生日转换为年龄""""""将年龄转换为生日(这里仅作示例)""""""薪资字段根据职位和绩效计算薪资""""""计算实际薪资""""""解析薪资数据""""""员工详细信息序列化器使用自定义字段处理特殊数据"""

宅男很神经 1320

DRF (Django REST framework) 中的Request 与 Response

DRF中的Request 与 Response 1. Request   -REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST framework提供的扩展了HttpRequest类的Request类的对象。   -REST framework 提供了Parser解析器,在接收到请求后会自动根据Content-Typ...

weixin_30521649的博客 352

riscv32-gcc工具链实战:从下载到编译的完整指南

本文提供了一份详尽的riscv32-gcc工具链实战指南,涵盖从官方渠道下载预编译版本、正确选择riscv32-glibc版本、配置环境变量到实战编译的全过程。通过清晰的步骤和避坑指南,帮助开发者快速搭建稳定的RISC-V交叉编译环境,并成功编译从Hello World到Linux内核的程序。

s3t4u的博客 676

从踩坑到填平:我在RHEL7上给Tesla A100装驱动的完整记录(含Fabric Manager配置)

本文详细记录了在RHEL7系统上为Tesla A100安装Nvidia驱动的完整过程,包括Fabric Manager配置的关键步骤。通过分析A100架构的特殊性,提供了从驱动安装到服务配置的详细指南,并分享了常见问题的排查方法和性能调优技巧,帮助用户高效部署高性能GPU计算环境。

weixin_29291863的博客 283

django-restful-framework基础知识

DRF基础知识

留下虚度光阴的一些证据。 3095

OFDM时频脉冲形状与子载波正交性的理解

从多载波调制的角度来理解子载波间正交,首先要明确OFDM默认的脉冲成型是时域矩形窗,时域上每个子载波 ej2πfnte^{j2πf_nt}ej2πfn​t 都被一个矩形窗脉冲gT(t)g_T(t)gT​(t)成型。其次,OFDM子载波间隔 等于 OFDM符号周期的倒数,这是子载波正交的条件。 ​ 根据时频脉冲形状,可以从时域上理解如左图(注意是矩形脉冲 乘 复指数),从频域上理解如右图(sinc脉冲 卷 频点)。 ​

weixin_43803202的博客 2215

Django Rest_Framework(DRF)

Django REST framework中的Serializer使用类来定义,必须直接或间接继承于rest_framework.serializers.Serializer。rest_framework.serializers 是drf提供给开发者调用的序列化器模块里面声明了所有的可用序列化器的基类,常用的有:Serializer 序列化器基类,drf中所有的序列化器类都必须继承于 Serializer。

m0_61810345的博客 2833

024、反激变换器的短路保护设计

本文详细探讨了反激变换器短路保护的设计要点与实践经验。作者通过实际案例分析了短路时反激拓扑的电流特性,指出初级峰值电流限制是最基础的保护手段,但需配合打嗝模式使用。文章重点剖析了打嗝模式设计的三个关键陷阱:频率设定、退出条件和软启动衔接。同时强调次级侧辅助保护、变压器参数优化、环路响应协调的重要性,并比较了自恢复与锁死方案的适用场景。最后提出实测验证的四个关键点和设计经验:不盲信芯片手册、保护电路独立设计、充分留有余量、进行破坏性测试。全文以工程实践为导向,为反激电源的可靠短路保护提供了系统性解决方案。

Jack010169的博客 242

YOLOv5入门实践(2)——手把手教你利用labelimg标注数据集

YOLOv5入门实践第2步,手把手教你使用labelimg标注数据集

路人贾的博客 1万+

Django REST Framework——4. 请求与响应

文章目录一、请求对象(Request Object)常用属性二、响应对象(Response Object)常用属性三、状态码(Status codes)3.1 使用方法3.2 辅助函数四、配置默认Response渲染器4.1 全局配置4.2 局部配置4.3 渲染器类 一、请求对象(Request Object) DRF传入视图的request对象不再是Django默认的HttpRequest对象,而是DRF提供的扩展后的request对象。Request对象的核心功能是request.data属性,它与re

花城的博客 1341

第一节:初识n8n与下一代工作流自动化

本章介绍了n8n的Fair-code理念与节点式架构,对比了其与Zapier/Make的核心差异,并引导读者在n8n Cloud上完成首次界面导览,建立了工作流自动化的宏观认知。

easeyoo的专栏 106

Django REST Framework 请求封装源码解析与实现流程

关于DRF request 对象对Django request 对象二次封装的源码解析

YAnt的博客 1433

CodeBuddy Code CLI 常用工作流:17个实战场景全解析

CodeBuddy Code CLI 17个实战场景解析 本文详细介绍了CodeBuddy Code CLI在17个开发场景中的高效应用,包括: 快速理解新代码库 高效修复Bug 安全重构代码 使用子代理系统处理专业任务 Plan Mode安全分析 自动化测试处理 创建合并请求 文档生成与维护 图片内容分析 文件目录快速引用 每个场景都配有具体命令示例和最佳实践,帮助开发者提升工作效率。

简简单单Onlinezuozuo 1079

KEPServerEX 6 之 lot Gateway MQTT Clinet 配置使用方式

IoT Gateway即Internet of Things Gateway物联网网关。 ---------------------------------------------------------------------------------- 方式:使用kepw的IOTGateway插件选择MQTTClient 解决:可以实现 KEPW 的Tag值 发送到 MQTT 服务器上 ----------------------------------------...

-雲飛兄-博客 6942

如何高效处理请求与响应:Django REST Framework 完整指南

Django REST Framework 是一个强大的 Web API 开发工具包,专为 Django 框架设计,提供了一套丰富的功能集来构建 Web API,包括序列化、分页、权限管理等。本文将深入探讨 DRF 中请求与响应的处理机制,帮助开发者快速掌握 API 开发的核心技能。 ## 📋 请求处理基础:解析用户输入 在 DRF 中,请求处理的核心是解析客户端发送的数据。框架提供了多种解

gitblog_00373的博客 427

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

django rest framework @action

1.作用:将ViewSet方法标记为可路由操作。@action装饰器函数将被赋予“mapping”属性,可用于添加其他基于方法的行为的“方法映射器”。 2.@action(methods=None, detail=None, url_path=None, url_name=None, **kwargs) methods:此操作响应的HTTP方法名称的列表。默认为“get”。 detail:必需。确定此操作是否适用于实例/细节请求或集合/列表请求。 url_path:定义此操作的url段。默认为装饰的方法的名

小太阳xss的博客 4835

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Django REST framework的请求和响应

请求对象(Request object) REST framework引入了一个 Request 对象, 它继承自普通的 HttpRequest ,但能够更加灵活的解析收到的请求。Request 对象的核心功能,就是其中的 request.data 属性。这个属性跟 request.POST 相似,但对我们的Web API来说,更加的有用。 request.POST # 只能处理表单(fo...

chengqiang20152015的博客 657

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Django REST framework笔记(一)

一:REST framework简介 REST framework是什么? Django REST框架是一个功能强大且灵活的工具包,用于构建Web API REST framework的优点 : 1,Web可浏览API为开发人员带来了巨大的可用性。(The Web browsable API is a huge usability win for your developers.) 2,身份验...

Lee hua 3450

Django Rest Framework 笔记

Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。创建与项目应用对应的序列化文件依据项目模型对象定义对应的序列化类在视图集中,除了上述默认的方法动作外,还可以添加自定义动作,进行扩展。

xjbieke的博客 1565

Django REST Framework异常处理终极指南:构建优雅的API错误响应系统

在现代Web API开发中,异常处理是确保系统稳定性和用户体验的关键环节。Django REST Framework(DRF)作为构建强大Web API的工具包,提供了一套完善的异常处理机制,帮助开发者轻松管理各种错误场景。本文将深入探讨DRF异常处理的核心概念、内置异常类型以及如何自定义异常处理逻辑,让你的API错误响应既专业又友好。 ## DRF异常处理的核心机制 DRF的异常处理系统基于

gitblog_01147的博客 917

Django REST Framework响应类Response详解

本文介绍了DRF框架中的Response类,它是一个智能HTTP响应类,能够根据请求自动渲染JSON、XML、HTML等格式。文章详细说明了其基本用法和关键参数,包括data(序列化数据)、status(HTTP状态码)、headers(自定义头部)等,并强调了正确使用Serializer实例的注意事项。通过APIView示例展示了实际应用场景,体现了Response类在内容协商和RESTful API构建中的优势。最后总结了该类自动处理多种格式、灵活配置响应以及与序列化器集成的核心功能。

言之。 1万+

Django Rest Framework API指南

转载:https://www.cnblogs.com/victorwu/p/7418368.html Django Rest Framework 所有API如下: 目录 一、 请求(Request) 二、Response(响应) 三、基本视图类 (APIView/@api_view) 四、 通用视图(Generic views) 五、视图集合ViewSets ...

xiaofuge027的博客 1002

人人都能看懂的Django REST framework

文章目录一、前后端分离1. 开发模式2. 前后端分离的优势3. 为什么要有前后端分离4. 前后端分离的缺点二、RESTful API1. RESTful API设计规范三、快速入手四、序列化1. 普通序列化1.1 模型类1.2 序列化1.3 参数约束1.4 利用反序列化生成模型对象1.5 利用序列化生成JSON数据2. 模型序列化ModelSerializer2.1 序列化2.2 编写视图2.3 编写子路由2.4 编写根路由2.5 注意3. 模型序列化(高级)3.1 模型类3.2 序列化3.3 视图3.4

南枝向暖北枝寒 2270

Django REST framework框架之登陆(TokenAuthentication认证方案)

Django的传统开发模式中,用户提交登陆信息表单时,会携带一个{% csrf_token %}的Hidden标签提交到服务器,它会生成一段字符串,功能就是验证表单的安全性进而防止跨站请求伪造攻击。 而在DRF框架中,在BrowserAPI页面的用户登陆同样也是运用了这一机制,通过Django的LoginView函数实现CSRF的表单安全验证实现登陆。 代码示例如下: urlpatterns =...

Rapzhang 1万+
上一篇: python-递归函数
下一篇: python排序算法(一)、冒泡排序、选择排序、插入排序
simpleyako
博客等级 码龄8年 26粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值