1、请求中的方法
根据HTTP 标准,HTTP 请求可以使用多种请求方法。
HTTP 1.0定义了三种请求方法:GET,POST和HEAD方法(最常用)
HTTP 1.1新增了五种请求方法:OPTIONS,PUT,DELETE,TRACE和CONNECT方法。
请求方法 | 描述 |
---|---|
get | 请求指定页面信息,并返回实体主体。 |
post | 向指定资源提交数据进行处理请求(例如提交表单或上传文件),数据包含在请求体中。post请求可能会导致新的资源的建立或已有资源的修改。 |
head | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。 |
put | 从客户端向服务器传送的数据取代指定的文档的内容。 |
delete | 请求服务器删除指定的页面。 |
connect | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
options | 允许客户端查看服务器的性能。 |
trace | 回显服务器收到的请求,主要用于测试或诊断。 |
2、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: 请求中的元数据(消息头)
客户端IP地址 request.META[‘REMOTE_ADDR’
urls.py中
path('test_request',views.test_request)
views.py中
def test_request(request):
print('path info is:',request.path_info)
print('method is', request.method)
print('querystring is',request.GET)
return HttpResponse('test request ok')
终端输出:
path info is: /test_request
method is GET
querystring is <QueryDict: {'a': ['1'], 'b': ['2']}>
[06/Aug/2021 06:55:15] "GET /test_request?a=1&b=2 HTTP/1.1" 200 15
3、响应状态
- http协议常用的状态码
200: 请求成功;OK
301: 永久重定向-资源(网页等)被永久转移到其他URL
302: 临时重定向
404: 服务器无法找到客户端请求的资源;Not Found
500: 服务器内部错误;Internal Server Error - http协议状态码分类
1xx:100-101 信息提示
2xx:200-206 成功
3xx:300-307 重定向
4xx:400-415 错误类信息,客户端错误
5xx:500-505 错误类信息,服务器端错误
4、Django中响应对象
- 构造函数格式:
HttpResponse(content=响应体,content-type=响应体数据类型,status=状态码) - 作用:向客户浏览器返回响应,同时携带响应体内容
- 常用的content-type如下:
-‘text/html’(默认的,html文件)
-’text/plain’(纯文本)
-‘text/css’(纯文件)
-’multipart/form-data’(文件提交)
-‘application/json’(json传输)
-’application/xml’(xml传输) - HttpResponse子类
类名 | 描述 |
---|---|
HttpResponseRedirect | 构造函数的参数有一个:重定向的路径。 状态码 302。 |
HttpResponseNotModified | 构造函数没有任何参数。用它来表示这个页面在上次请求后未改变。 |
HttpResponseBadRequest | 错误请求,状态码 400。 |
HttpResponseNotFound | 没有对应的资源,状态码 404。 |
HttpResponseForbidden | 请求被禁止,状态码403。 |
HttpResponseServerError | 服务器错误,状态码500 |