提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


请求和响应的定义

请求: 是指浏览器端通过Http协议发送给服务端的数据
响应: 是指服务器端接收到请求后做相应的处理后再回复给浏览器端响应数据

3. django请求和响应,请求和响应的定义,请求相关方法,状态码,HttpRequest,HttpResponse初步介绍_状态码


请求

请求是指浏览器通过http协议发送给服务器端的数据。

请求中的方法

最常见就是get,post
3. django请求和响应,请求和响应的定义,请求相关方法,状态码,HttpRequest,HttpResponse初步介绍_python_02

常用方法 作用
GET 向特定的资源发出请求。例如在浏览器栏输入IP地址
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。
HEAD 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
PUT 向指定资源位置上传其最新内容
TRACE 回显服务器收到的请求,主要用于测试或诊断
DELETE 请求服务器删除指定页面

其他方法不做介绍.

django中的请求(HttpRequest)

  1. 请求在Django中实则是视图函数的第一个参数,即HttpRequest对象。
  2. Django接收到Http协议的请求后,会根据请求数据报文创建 HttpRequest对象
  3. HttpRequest 对象通过属性描述了请求的所有相关信息

常见输出

path_info: URL字符串
method : 表示HTTP请求方法,常用值为: “GET” “POST”
GET: QueryDict 查询字典的对象,包含get请求方式的所有数据
POST: QueryDict 查询字典的对象, 包含post请求方式的所有数据
FILES: 类似字典的对象,包含所有的上传文件信息
COOKIES: 字典,包含所有的cookie,键值对形式,都是字符串
session: 字典对象,表示当前会话
body: 字符串,请求体的内容(POST 或 PUT)
scheme : 请求协议(‘HTTP’ ‘HTTPS’)
request.get_full_path() : 请求的完整路径
request.META: 请求中的元数据(消息头),例如 request.META[‘REMOTE_ADDR’] : 客户端IP地址

示例

def test_request(request):
    print('path info is ', request.path_info)
    print('method  is ', request.method)
    print('querystring is ', request.GET)
    print('full path is ', request.get_full_path())
    return HttpResponse('test request')
[13/Feb/2022 21:45:41] "GET /test?a=10&b=20 HTTP/1.1" 301 0
path info is  /test/
method  is  GET
querystring is  <QueryDict: {'a': ['10'], 'b': ['20']}>
full path is  /test/?a=10&b=20
[13/Feb/2022 21:45:42] "GET /test/?a=10&b=20 HTTP/1.1" 200 12

3. django请求和响应,请求和响应的定义,请求相关方法,状态码,HttpRequest,HttpResponse初步介绍_python_03

查看后台,对应信息打印出来

path info is  /test_request/
method  is  GET
querystring is  <QueryDict: {'a': ['10']}>
full path is  /test_request/?a=10
[21/Feb/2022 11:23:30] "GET /test_request/?a=10 HTTP/1.1" 200 20
响应

响应式指服务器端接收到请求后做相应的处理后再回复给浏览器端的数据

响应状态码

常见状态码:
1. 202 请求成功
2. 301 永久重定向-资源被永久转移到其他URL
3. 302 临时重定向
4. 404 请求的资源不存在。例如网页等
5. 500 内部服务错误

状态码组成

HTTP 状态码由三个十进制数字组成,第一个定义了状态码类型。
3. django请求和响应,请求和响应的定义,请求相关方法,状态码,HttpRequest,HttpResponse初步介绍_django_04

django的响应对象(HttpResponse)

HttpResponse这个构造函数的格式:
HttpResponse(content=响应体,content_type=响应体数据类型,status=状态码)
作用: 向客户端浏览器返回响应,同时携带响应体内容

常用Content-Type

‘text/html’ 默认的,html文件
‘text/plain’ 纯文本
‘text/css’ css文件
‘text/javascript’ js文件
‘multipart/form-data’ 文件提交,例如上传文件
‘application/json’ json传输
‘application/xmk’ xml文件

HttpResponse子类

3. django请求和响应,请求和响应的定义,请求相关方法,状态码,HttpRequest,HttpResponse初步介绍_python_05

类型 作用 对应的状态码
HttpResponseRedirect 重定向 302
HttpResponseNotModified 未修改 304
HttpResponseBadRequest 错误请求 400
HttpResponseNotFound 没有对应资源 404
HttpResponseForbidden 请求被禁止 403
HttpResponseServerError 服务器错误 500

示例-跳转(302)

path('test_response/', views.test_response)
def test_response(request):
     return HttpResponseRedirect('/page/1')

跳转到page/1 页面
3. django请求和响应,请求和响应的定义,请求相关方法,状态码,HttpRequest,HttpResponse初步介绍_python_06