django的request和response对象

437 阅读3分钟

django的request和response对象

这是我参与8月更文挑战的第15天,活动详情查看:8月更文挑战

当请求一个页面时,Django把请求的metadata数据包装成一个HttpRequest对象,然后Django加载合适的view方法,把HttpRequest 对象作为第一个参数传给view方法。任何view方法都应该返回一个HttpResponse对象。

1、request

pRequest 对象表示来自某客户端的一个单独的 HTTP 请求。Request 对象是 Django 自动创建的。

response.jpg

它的属性有很多:

常用属性:
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协议的响应式返回