提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
请求和响应的定义
请求: 是指浏览器端通过Http协议发送给服务端的数据
响应: 是指服务器端接收到请求后做相应的处理后再回复给浏览器端响应数据
请求
请求是指浏览器通过http协议发送给服务器端的数据。
请求中的方法
最常见就是get,post
常用方法 | 作用 |
---|---|
GET | 向特定的资源发出请求。例如在浏览器栏输入IP地址 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。 |
HEAD | 向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。 |
PUT | 向指定资源位置上传其最新内容 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
DELETE | 请求服务器删除指定页面 |
其他方法不做介绍.
django中的请求(HttpRequest)
- 请求在Django中实则是视图函数的第一个参数,即HttpRequest对象。
- Django接收到Http协议的请求后,会根据请求数据报文创建 HttpRequest对象
- 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
查看后台,对应信息打印出来
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 状态码由三个十进制数字组成,第一个定义了状态码类型。
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子类
类型 | 作用 | 对应的状态码 |
---|---|---|
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 页面