django的request和response对象
这是我参与8月更文挑战的第15天,活动详情查看:8月更文挑战
当请求一个页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把HttpRequest 对象作为第一个参数传给view方法。任何view方法都应该返回一个HttpResponse对象。
1、request
pRequest 对象表示来自某客户端的一个单独的 HTTP 请求。Request 对象是 Django 自动创建的。
它的属性有很多:
常用属性:
request.method 请求方法 GET POST if request.method == 'GET':
request.GET URL上携带的参数 ?k1=v1$k2=v2 {}
request.POST post请求提交的数据 {} 编码方法是URLencode
request.path_info 路径信息 不包含IP和端口 也不包含参数 /publisher_list/
request.REQUEST 是POST和GET属性的集合体,但是有特殊性,先查找POST属性,然后再查找GET属性。
request.body 请求体,byte类型 request.POST的数据就是从body里面提取到的(获取的是post请求提交的内容)
request.COOKIES 所有cookies的标准Python字典对象。Keys和values都是字符串。
request.session session类似于字典,对象唯一可读写的属性,代表当前会话的字典对象。只有激活Django中的session支持时该属性才可用。
request.FILES 上传的文件
request.META 头的信息 小写-->大写 HTTP_开头,包含所有可用HTTP头部信息的字典
request.user 一个django.contrib.auth.models.User 对象表示当前登录用户,若当前用户尚未登录,user会设为django.contrib.auth.models.AnonymousUser的一个实例。
不常用属性:
request.scheme() http或https
request.path() 表示请求的路径组件(不含域名)
request.raw_post_data 原始HTTP POST数据,未解析过。 高级处理时会有用处。
常用方法:
request.get_full_path() 完整的路径信息 不包含IP和端口 ,包含参数
request.is_ajax() 请求是否是ajax请求
requesst.is_secure() 如果请求是安全的,返回True,就是说,发出的是HTTPS请求。
2、response
Request 和 Response 对象起到了服务器与客户机之间的信息传递作用。Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏览器。
from django.shortcuts import render, HttpResponse, redirect
HttpResponse("字符串") #返回字符串
render(request,"模板的文件名",{'k1':v1}) #返回一个HTML页面
redirect('地址') #重定向 其实就是给了 Location '地址'和状态码 301 302
JsonResponse() 返回json数据
from django.http import JsonResponse
def text_json(request):
a = {"a":"b"}
b = ["aa","bb"]
return JsonResponse(b,safe=False) #加safe=False了可以传递列表
from django.http import JsonResponse
def Jh(request):
return JsonResponse({'s':123})
- 帮助用户创建JSON编码的响应
- 参数data是字典对象
- JsonResponse的默认Content-Type为application/json
3、HTTP协议:
HTTP(超文本传输协议)是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
3.1 状态码
- 1xx 提示信息接受了请求需要进一步的处理
- 2xx 成功的提示 接受了请求,正常处理了
- 3xx 重定向 接受了请求,要处理请求的话,需要再次访问另外的一个地址
- 4xx 请求方面的错误 404 403
- 5xx 服务器的错误
3.2 请求和相应的流程
- 浏览器发送请求
- 服务器接受请求,进一步的去处理,根据路径找到函数,执行函数处理逻辑,返回相应的内容
- 内容按照HTTP协议的响应式返回