官方文档:
https://docs.djangoproject.com/en/1.11/ref/request-response/
视图中的request请求对象:
当请求页面时,Django创建一个HttpRequest包含有关请求的元数据的对象。
常用的值和操作:
· request.method #获取请求属性
· request.GET #获取GET请求的参数字典信息,用.get()取值
· request.POST #获取POST请求的参数字典信息,用.get()取值
· request.body #获取用户提交的原始数据bytes类型
· request.path_info #获取请求文件路径
· request.get_full_path()#获取请求文件完整路径(包含参查询数)
· request.path #获取请求文件路径
· request.META #获取请求数据头部信息
- request.FILES #获取上传的文件
注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用:request.POST.getlist("hobby")
视图中的response响应对象:
当Django加载适当的视图,将HttpRequest第一个参数传递给view函数。每个视图都负责返回一个HttpResponse对象。
响应对象主要有三种形式:
o HttpResponse() 响应字符串
o render() 响应模板文件
o redirect() 响应30X代码重定向
from django.http import JsonResponse使用JsonResponse,直接相应数据,字典以外数据类型徐设置参数safe=False
状态码:301和302
1)301和302的异同。
共同之处:
301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。
不同之处:
301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;
302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。 SEO302好于301
2)重定向原因:
(1)网站调整(如改变网页目录结构);
(2)网页被移到一个新地址;
(3)网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。