Request & Response 请求和响应

1. 请求 request

1.1 HttpRequest 定义

服务器在接收到http请求后,会根据报文创建HttpRequest对象
视图中第一个参数就是HttpRequest对象
Django框架会进行自己的包装,之后传递给视图
属性:

path 请求的完整路径
method 请求的方法,通常get,post
Encoding 编码方式,常用utf-8
Get 类似字典的参数,包含了get的所有参数
post 类似字典的参数,包含了post的所有参数
Files 类似字典的参数,包含了上传的文件
Cookies 字典,包含了所有的COOKIES
Session 类似字典,表示会话
方法: is_ajax() 判断是否是ajax(),通常在移动端和js中

2. GET 和 POST的区别

HTTP: get请求 request.GET
HTTP: post请求 request.POST
url中?后面的内容(get) 不同浏览器对长度有限制 几千到几万bites不等
request.method == 'GET' / 'POST'

GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
历史 参数保留在浏览器历史中。 参数不会保存在浏览器历史中。
对数据长度的限制 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 无限制。
对数据类型的限制 只允许 ASCII 字符。 没有限制。也允许二进制数据。
安全性 与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。在发送密码或其他敏感信息时绝不要使用 GET ! POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。
可见性 数据在 URL 中对所有人都是可见的。 数据不会显示在 URL 中。

2.响应 response

2.2 响应的QueryDict类型

1)类似字典的结构数据,与字典的区别,可以存在相同的键
2)GET和POST都是QueryDict对象
3)QueryDict中数据获取方式
    dict[‘name’] 或者dict.get(‘name’)
    获取指定key对应的所有值
    dict.getlist(‘name’)

2.3 响应

1)可以直接返回一个HttpResponse对象:
服务器返回给客户端的数据,HttpResponse由程序员自己创建
不使用模板,直接HttpResponse()
2)可以返回模板
调用模板,进行渲染,直接使用render一步到位
返回表达式:
render(request, template_name, context)
request 请求体对象
template_name 模板路径
context 字典参数,用来填坑

3)属性
Content 返回的内容
Charset 编码格式
status_code 响应状态码(200,4xx,5xx)
4xx 客户端的错误
5xx 服务端的错误
content_type MIME类型,定义传输类型的,比如有xml,html,png等等,比如content_type=’image/jpg’
4)方法
init 初始化内容
write(xxx) 直接写到文本
flush 冲刷缓冲区
set_cookie(key, value=’’, max_age=None, exprise=None)
delete_cookie(key) 删除cookie,上面是设置
4)重定向
导入方法 : from django.http import HttpResponseRedirect
HttpResponseRedirect响应重定向:可以实现服务器内部的跳转
Return HttpResponseRedirect(‘/xxx/xxx’)
使用的时候推荐使用反向解析reverse :
from django.urls import reverse
return HttpResponseRedirect(reverse('backweb:index'))
JsonResponse
使用json数据的请求,通常用在异步请求上jsonResponse(dict)
content_type是application/json

你可能感兴趣的:(Request & Response 请求和响应)