代码编织梦想

请求和响应

web框架本质就是处理用户发起的请求,然后返回响应结果。请求,和响应就是框架中的数据流。

请求

当页面被请求时,django会创建一个HttpRequest对象,该对象包含关于请求的元数据。然后django加载适当的视图,将HttpRequest对象作为第一个参数传递给视图函数(这就是为什么所有的视图的第一个参数都命名为request的原因)。每个视图负责返回一个HttpResponse对象。

HttpRequest对象

常用属性

  • .body

原始请求的body,类型是字节类型。

  • .method

代表请求中使用的http方法的字符串,保证是大写字母。例如在函数视图中通过判断request.method来处理不同的逻辑:

if request.method == 'GET':
    do_something()
elif request.method == 'POST':
    do_something_else()
  • .GET

一个类似字典的对象,包含所有给定的HTTP GET参数(查询参数)。

  • .POST

一个类似字典的对象,包含所有给定的表单格式的HTTP POST参数。

  • .FILES

一个类似字典额对象,包含所有上传的文件。

更多属性,请参考官方文档

请求参数类型

利用HTTP协议向服务器传参有几种途径?

  1. 查询字符串参数
  2. url中?后面的key=value形式的参数
  3. 在django中通过request.GET属性获取
  4. 请求体参数
  5. post方法的form表单
    • 在django中通过request.POST属性获取
  6. json格式和put,patch,delete方法传递的form表单
    • 在django中通过request.body属性获取
  7. 文件
    • 上传的文件通过request.FILES属性获取
  8. 路径参数
  9. 在django中通过路由规则传递给视图

咱们直接举个get请求的栗子🌰~,其他请求方法同理。

urls先配个路径 :

 视图views里面这么写:

 浏览器访问:

打断点调试查看month和year:

 

响应

与django自动创建请求对象不同,创建响应对象是你的责任。你写的每个视图都要负责实例化,填充和返回一个响应对象。

HttpResponse

传入字符串

典型的用法是将页面的内容以字符串、或字节字符串的形式传递给 HttpResponse 构造函数:

>>> from django.http import HttpResponse
>>> response = HttpResponse("Here's the text of the Web page.")
>>> response = HttpResponse("Text only, please.", content_type="text/plain")
>>> response = HttpResponse(b'Bytestrings are also accepted.')

也可以增量的形式添加内容,你可以使用response作为一个类似文件的对象:

>>> response = HttpResponse()
>>> response.write("<p>Here's the text of the Web page.</p>")
>>> response.write("<p>Here's another paragraph.</p>")

设置头字段

使用HttpResponse.headers设置和删除一个字段。

>>> response = HttpResponse()
>>> response.headers['Age'] = 120
>>> del response.headers['Age']

设置状态码

直接传递参数status给构造函数

>>> from django.http import HttpResponse
>>> response = HttpResponse("Here's the text of the Web page.", status=200)

JsonResponse对象

  • class JsonResponse(data,encoder=DjangoJSONEncoder, safe=True, json_dumps_params=None, kwargs)

一个HttpResponse的子类,用来创建json编码的响应。默认的Content-Typeapplication/json。第一个参数data应该是字典实例。如果safe参数设置为False,它可以是任何json可序列化的对象。

典型的用法:

>>> from django.http import JsonResponse
>>> response = JsonResponse({'foo': 'bar'})
>>> response.content
b'{"foo": "bar"}'

序列化非字典对象:

为了对 dict 以外的对象进行序列化,你必须将 safe 参数设置为 False

>>> response = JsonResponse([1, 2, 3], safe=False)

如果没有传递 safe=False,将引发一个 TypeError

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Sean_0819/article/details/128819847

http请求头格式和响应格式_梓栋code的博客-爱代码爱编程_请求头格式

HTTP请求头格式 提示: 回车符 \r 换行符 \n 请求首行分析: 请求方式: GET 和 POST 方式: GET请求:地址栏访问、超链接访问都是get请求方式,get请求方式不安全,地址栏大小有限。

HTTP—请求和响应消息的结构-爱代码爱编程

HTTP消息结构 HTTP请求消息和响应消息具有相似的结构,由以下部分组成︰ start line:一行起始行用于描迹要执行的请求,或者是对应的状态,成功或失败。这个起始行总是单行的。**HTTP headers:**一个可选的HTTP头集合指明请求或描迹消息正文。empty line:一个空行指示所有关于请求的元数据已经发送完毕。body:一个可选的

2020-10-27-爱代码爱编程

DNS报文格式解析 DNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。DNS 报文格式如图所示。 上图中显示了 DNS 的报文格式。其中,事务 ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这 6 个字段是DNS的报文首部,共 12 个字节。 整个 DNS 格式主要分为 3 部分内容,即基础结构部分、问题部分

请求和响应详解(request&response)-爱代码爱编程

request&response:请求和响应详解 request请求对象一、Request请求对象介绍二、Servlet继承结构三、底层执行流程四、请求对象中常用方法获取路径获取请求头获取请求参数信息流对象获取请求信息五、获取请求参数并封装成对象六、请求行和请求头的说明七、中文乱码问题八、请求域九、请求转发(重点)十、请求包含响应对象一、

DNS请求报文和响应报文解析-爱代码爱编程

DNS 分为查询请求和查询响应,请求和响应的报文结构基本相同。DNS 报文格式如图所示。 上图中显示了 DNS 的报文格式。其中,事务 ID、标志、问题计数、回答资源记录数、权威名称服务器计数、附加资源记录数这 6 个字段是DNS的报文首部,共 12 个字节。 整个 DNS 格式主要分为 3 部分内容,即基础结构部分、问题部分、资源记录部分。下面将详细地

响应拦截和请求拦截-爱代码爱编程

响应拦截和请求拦截: 1、请求拦截器 请求拦截器的作用是在请求发送前进行一些操作,例如在每个请求体里加上token,统一做了处理如果以后要改也非常容易。 关于拦截,这里只说原理,前端的请求,最终还是离不开 ajax,像vue 的 vue-resource 、axios,都只是对ajax进行了统一的封装,它暴露出来的拦截器,其实就是写了一个方法,把aj

html 设置请求头,http请求头和响应头设置-爱代码爱编程

windows中文操作系统默认gbk编码 nodejs服务器默认返回utf-8 content-type类型: text/palin; 普通文本类型 text/html; html文档类型 比如res.end(" 段落"),后端返回的html文件,其实都是读取里面的内容作为字符串返回,或者二进制流数据.文件的读写就是流操作 text/xml

Python爬虫之HTTP请求和响应-爱代码爱编程

请求 请求,由客户端向服务端发出,可以分为4个部分内容:请求方法(Request Method),请求的网址(Request URL)、请求头(Request Header)、请求体(Request Body)。 常见的请求方法有两种:GET和POST。在浏览器中直接输入URL并回车,这便发起了一个GET请求,请求的参数会直接包含到URL里。例如,在百

HTTP请求报文和响应报文-爱代码爱编程

目录 HTTP报文请求报文响应报文HTTP状态码HTTP状态码分类使用Chrome网络控制台查看通信报文 HTTP报文 HTTP报文是HTTP协议交互时所规定请求和响应的规则。请求端(客户端)向响应端(服务器端)请求的发送的信息叫做请求报文,响应端(服务器端)反馈请求端(客户端)的叫做响应报文。 请求报文 请求报文的格式由请求行+请求头+

python http的请求和响应-爱代码爱编程

""" http请求(请求行和空行是必须要有的,请求体和请求头可以没有) 请求格式:请求行,请求头,空行,请求体 1.请求行:具体请求类别和请求内容 GET / HTTP/1.1 请求类别 请求内容 协议版本 请求类别表示要做不同的事

什么是请求报文和响应报文?-爱代码爱编程

在了解请求报文和响应报文之前,咱们先了解下什么是HTTP协议? http协议: 网络传输协议 协议:规定网络数据传输格式      ---    http协议组成: 请求报文+响应报文 浏览器发请求 必须是 : 请求报文 服务器响应 必须是 : 响应报文 那什么是请求报文呢? 由三部分组成 (1)请求行 : 包含请求方法, URL(请求地

请求拦截和响应拦截_13少啊的博客-爱代码爱编程

在我们发送请求的时候会进行一些拦截处理,在响应数据的时候也会进行一些拦截处理。 1.全局代码 // 1.导入axios import axios from 'axios' import { Message } from 'element-ui' import Store from '@/store' import Router from '@/ro

http复习——交互过程、响应状态码、不同类型的请求_交互消息分类 请求 响应 通知-爱代码爱编程

目录 一、HTTP请求交互的基本过程 1.1HTTP请求报文 1.2HTTP响应报文 二、常见的响应状态码 三、POST请求体参数格式  四、不同类型的请求及其作用 一、HTTP请求交互的基本过程 客户端向服务端发送请求,服务端向客户端做出响应 请求报文:包括请求行,请求头,请求体 响应报文:包括状态行(响应行),响应头,实