- 请求是指浏览器通过HTTP协议发送给服务器端的数据
- 响应是指服务器端接收到请求后做响应的处理后再回复给浏览器端的数据
- 根据HTTP标准,HTTP请求可以使用多种请求方法。
- HTTP1.0定义了三种请求方法:GET,POST和HEAD方法 (最常用)
- HTTP1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
序号 | 方法 | 描述 |
---|---|---|
1 | GET | 请求指定的页面信息,并返回实体主体。 |
2 | HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取抱头 |
3 | POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改 |
4 | OPTIONS | 从客户端向服务器传送的数据取代指定的文档的内容。 |
5 | PUT | 请求服务器删除指定的页面。 |
6 | DELETE | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
7 | TRACE | 允许客户端查看服务器的性能。 |
8 | CONNECT | 回显服务器收到的请求,主要用于测试或诊断。 |
Django中的请求
- 请求在Django中实则就是 视图函数的第一个参数,即HttpRequest对象
- Django接收到http协议的请求后,会根据请求数据报文创建HttpRequest对象
- HttpRequest对象 通过属性 描述了 请求的 所有相关信息。
-
- path_info: URL字符串
- method: 字符串,表示HTTP请求方法,常用值:'GET'、'POST'
- GET: QueryDict查询字典的对象,包含get请求方式的所有数据
- POST: QueryDict查询字典的对象,包含post请求方式的所有数据
- FILES: 类似于字典的对象,包含所有的上传文件信息。
- COOKIES: Python字典,包含所有的cookie,键和值都为字符串
- session: 似于字典的对象,表示当前的会话
- body: 字符串,请求体的内容(POST或PUT)
- scheme: 请求协议('http' / 'https')
- request.get_full_path(): 请求的完整路径
- request.META: 请求中的元数据(消息头)
- request.META['REMOTE_ADDR']: 客户端IP地址
HTTP状态码的英文是HTTP Status Code
下面是常见的HTTP状态码:
- 200 - 请求成功
- 301 - 永久重定向-资源(网页等)被永久转移到其他URL
- 302 - 临时重定向
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发送了错误 |
Django中的响应对象
- 构造函数格式:
HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
- 作用:
- 向客户端浏览器返回响应,同时携带响应体内容。
- 参数:
- content:表示返回的内容
- status_code:返回的HTTP响应状态码(默认为200)。
- content_type:指定返回数据的MIME类型(默认为"text/html")。浏览器会根据这个属性,来显示数据。如果是text/html,那么就会解析这个字符串,如果text/plain,那么就会显示一个纯文本。
- 常见的Content_Type如下:
- 'text/html' (默认的,html文件)
- 'text/plain' (纯文本)
- 'text/css' (css文件)
- 'text/javascript' (js文件)
- 'multipart/form-data' (文件提交)
- 'application/json' (json传输)
- 'application/xml' (xml文件)
- HttpResponse子类
类型 | 作用 | 状态码 |
---|---|---|
HttpResponseRedirect | 重定向 | 302 |
HttpResponseNotModified | 未修改 | 304 |
HttpResponseBadRequest | 错误请求 | 400 |
HttpResponseNotFound | 没有对应的资源 | 404 |
HttpResponseForbidden | 请求被禁止 | 403 |
HttpResponseServerError | 服务器错误 | 500 |