博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django----Request对象&Response对象
阅读量:5023 次
发布时间:2019-06-12

本文共 3094 字,大约阅读时间需要 10 分钟。

Django 使用Request 对象和Response 对象在系统间传递状态。

HttpRequest 对象:

Request.body一个字节字符串,表示原始HTTP 请求的正文。它对于处理非HTML 形式的数据非常有用:二进制图像、XML等。 如果要处理常规的表单数据,应该使用HttpRequest.POST

Request.path:一个字符串,表示请求的页面的完整路径,不包含域名:"/music/bands/the_beatles/"

Request.path_info:在某些Web 服务器配置下,主机名后的URL 部分被分成脚本前缀部分和路径信息部分。path_info 属性将始终包含路径信息部分,不论使用的Web 服务器是什么。使用它代替path 可以让代码在测试和开发环境中更容易地切换。

Request.method:一个字符串,表示请求使用的HTTP 方法。必须使用大写(GET/POST)

Request.GET:一个类似于字典的对象,包含HTTP GET 的所有参数

Request.POST:一个包含所有给定的HTTP POST参数的类字典对象,提供了包含表单数据的请求。POST 不包含上传的文件信息。参见FILES

Request.COOKIES:个标准的Python 字典,包含所有的cookie。键和值都为字符串。

Request.FILES:个类似于字典的对象,包含所有的上传文件。FILES 中的每个键为<input type="file"name="" /> 中的name

         FILES 只有在请求的方法为POST 且提交的<form> 带有enctype="multipart/form-data" 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象。

一个标准的Python 字典,包含所有的HTTP 头部。具体的头部信息取决于客户端和服务器,下面是一些示例:CONTENT_LENGTH —— 请求的正文的长度(是一个字符串)。CONTENT_TYPE —— 请求的正文的MIME 类型。HTTP_ACCEPT —— 响应可接收的Content-Type。HTTP_ACCEPT_ENCODING —— 响应可接收的编码。HTTP_ACCEPT_LANGUAGE —— 响应可接收的语言。HTTP_HOST —— 客服端发送的HTTP Host 头部。HTTP_REFERER —— Referring 页面。HTTP_USER_AGENT —— 客户端的user-agent 字符串。QUERY_STRING —— 单个字符串形式的查询字符串(未解析过的形式)。REMOTE_ADDR —— 客户端的IP 地址。REMOTE_HOST —— 客户端的主机名。REMOTE_USER —— 服务器认证后的用户。REQUEST_METHOD —— 一个字符串,例如"GET" 或"POST"。SERVER_NAME —— 服务器的主机名。SERVER_PORT —— 服务器的端口(是一个字符串)。
Request.META

Request.user:一个AUTH_USER_MODEL 类型的对象,表示当前登录的用户。如果用户当前没有登录,user 将设置为django.contrib.auth.models.AnonymousUser 的一个实例。你可以通过is_authenticated 区分它们,

if request.user.is_authenticated():    # Do something for logged-in users.else:    # Do something for anonymous users.

Request.get_host():根据从HTTP_X_FORWARDED_HOST(如果打开USE_X_FORWARDED_HOST)和HTTP_HOST 头部信息返回请求的原始主机

Request.get_full_path():返回path,如果可以将加上查询字符串。"/music/bands/the_beatles/?print=true"

Request.is_ajax():如果请求是通过XMLHttpRequest(ajax) 发起的,则返回True

HttpResponse 对象

用法:可以将response 看做一个类文件对象

>>> from django.http import HttpResponse>>> response = HttpResponse("Here's the text of the Web page.")>>> response = HttpResponse("Text only, please.", content_type="text/plain")

Response的子类:

HttpResponseRedirect:用来重定向的地址(http://www.yahoo.com/search/;/search/)注意!这个响应会返回一个302的HTTP状态码。

HttpResponsePermanentRedirect:ResponseRedirect一样,但是它会返回一个永久的重定向(HTTP状态码301)而不是一个“found”重定向(状态码302)。

HttpResponseNotModified:构造函数不会有任何的参数,并且不应该向这个响应(response)中加入内容(content)。使用此选项可指定自用户上次请求(状态代码304)以来尚未修改页面。

HttpResponseBadRequest:HttpResponse的行为类似,但是使用了一个400的状态码。

HttpResponseForbidden:HttpResponse类似,但使用403状态代码。

 HttpResponseNotAllowed:HttpResponse类似,但使用405状态码。构造函数的第一个参数是必须的:一个允许使用的方法构成的列表(例如,['GET', 'POST'])。

 HttpResponseGone:HttpResponse类似,但使用410状态码。

HttpResponseServerError:HttpResponse类似,但使用500状态代码。

 JsonResponse:

  Content-Type 头部设置为application/json它的第一个参数data,应该为一个dict 实例。如果safe 参数设置为False,它可以是任何可JSON 序列化的对象。布尔参数safe 默认为True如果设置为False,可以传递任何对象进行序列化(否则,只允许dict 实例)。如果safe 为True,而第一个参数传递的不是dict 对象,将抛出一个TypeError

>>> from django.http import JsonResponse>>> response = JsonResponse({
'foo': 'bar'})>>> response.content'{"foo": "bar"}'序列化非字典对象response = JsonResponse([1, 2, 3], safe=False)

 

转载于:https://www.cnblogs.com/Vee-Wang/p/7780526.html

你可能感兴趣的文章
LeetCode 895. Maximum Frequency Stack
查看>>
模仿segmentfault 评论
查看>>
一个简单的日志函数C++
查看>>
Java 8 中如何优雅的处理集合
查看>>
IOS程序的启动过程
查看>>
连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
查看>>
Java操作Excel和Word
查看>>
Oracle 体系结构之ORACLE物理结构
查看>>
ORA-12538: TNS: no such protocol adapter
查看>>
盒子模型
查看>>
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Spring整合hibernate:3、使用XML进行声明式的事务管理
查看>>
SqlServer之Convert 函数应用格式化日期(转)
查看>>
软件测试领域中的10个生存和发展技巧
查看>>
Camera前后摄像头同时预览
查看>>
HDU 1856
查看>>
课堂作业01--架构师的职责
查看>>
iOS计算富文本(NSMutableAttributedString)高度
查看>>
2017/09/15 ( 框架2)
查看>>