> 文章列表 > Day2-Django视图的请求对象和响应对象

Day2-Django视图的请求对象和响应对象

Day2-Django视图的请求对象和响应对象

1.HttpRequest对象

HttpRequest对象定义于django/http/request.py文件中,每当一个请求到来的时候,Django就会创建一个携带有元数据的HttpRequest对象,传递给视图函数的第一个参数

HttpRequest对象常用的属性和方法

1)method

    请求时所使用的HTTP方法,主要有GET、POST、PUT等。使用@require_http_methods装饰器指定视图可以接受的方法。例如:只允许接收GET和POST方法时可以这样配置 :

from django.views.decrators.http import require_http_methods@require_http_methods(["GET","POST"])
def index(request):if request.method=='GET':return xxxelse:return xxx

当使用其他方法发出请求的时候则会报405的错误。

在 django/views/decorators/http.py中还有其他的装饰器指定可以接受的方法,例如require_GET只运行GET方法...

2) scheme

    返回请求的协议类型(http或https)

3)path

    返回当前请求页面的路径,但是不包括协议类型和域名

4)GET

    类字典对象,该对象只读,包含GET请求的所有参数。获取参数的方法:1.request.GET[参数名],若参数不存在则会报错.2.request.GET.get(参数名,获取不到的默认值)

5) POST

    也是一个QueryDict类型的类字典对象,保存的是POST请求中提交的表单数据,获取参数的方式和GET类似。

6)FILES

    这个属性只有在上传文件的时候才会用到,也是一个类字典对象.FILES属性中的每个键是<input type="file" name="" />中name的值,每个值是一个对应的Upload-File对象。

7)COOKIES

    包含了请求的cookie信息

8)META

    包含了请求的头部信息,例如:REMOTE_ADDR(客户端IP地址),HTTP_USER_AGENT(浏览器类型),SERVER_PORT(服务器端口号)......

9) user

  标识当前登录用户的AUTH_USER_MODEL实例,其实就是Django用户系统中的User类型。这个属性由AuthenticationMiddleware中间件完成设置,在用户为登录的情况下,即匿名访问,user会被设置为AnonymousUser类型的实例.

2.HttpResponse对象

HttpResponse对象定义于 django/http/response.py文件中,在视图中主动创建并返回.

常用属性和方法:

1)status_code

标识请求的状态,常用的状态码有 200、400、500等

2)content

 存储响应内容的二进制字符串

3)write

  将 HttpResponse对象视为类文件对象,可以向其添加响应数据

4)操作响应头

  像操作字典一样操作HttpResponse对象,字典的键对应响应头

5)子类对象

  • JsonResponse 
    默认将响应头Content-type设置为application/json,传入的第一个参数为一个字典对象,如果将safe参数改为False,则可以传入其他JSON序列化的对象。
  • HttpResponseRedirect
    用于实现响应重定向,状态码302,传入的参数为一个地址
  • HttpResonseNotFound,HttpResponseBadRequest,HttpResonseForbidden,HttpResponseServerError