Django Request 与Response对象
Django使用请求和响应对象在系统中传递状态。当请求页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。
然后Django加载适当的视图,将HttpRequest作为第一个参数传递给视图函数。每个视图都负责返回HttpResponse对象。
一、HttpRequest
HttpRequet.schema:所使用的Http协议(http,https)
HttpRequest.body:请求体
HttpRequest.path:表示请求页面的完整路径的字符串,不包括模式或域Http。
HttpRequest.path_info:与path相比只包含路径信息
HttpRequest.method:请求方法
HttpRequest.encoding:表示用于解码表单提交数据的当前编码(或无编码
HttpRequest.content_type:表示请求MIME类型的字符串,从CONTENT_TYPE报头解析。
HttpRequest.content_params:一个包含在CONTENT_TYPE头中的键/值参数的字典。
HttpRequest.COOKIES:包含所有cookie的字典。键和值是字符串。
HttpRequest.FILES:一个类字典的对象,包含所有上传的文件。文件中的每个键都是 上传文件的表单的名称。文件中的每个值都是UploadedFile。只有当请求方法是POST且发送到请求的具有enctype="multipart/form-data"时,文件才会包含数据。否则,文件将是一个空白的类字典对象。
HttpRequest.session:表示当前会话的可读和可写的、类似词典的对象。
HttpRequest.ste:当前站点
HttpRequest.user:表示当前登录的用户。如果用户当前没有登录,用户将被设置为AnonymousUser实例。
HttpRequest.get_full_path:获取当前URL路径
HttpRequest.get_signed_cookie():返回已签名cookie的cookie值,或引发django.core.sign。如果签名不再有效,则出现BadSignature异常。如果您提供默认参数,异常将被抑制,而该默认值将被返回。
HttpRequest.is_ajax():判断是否是Ajax请求
二、QueryDict对象
大部分字典方法都适用
QueryDict.__init__(query_string=None,mutable=False,encoding=None)
>>> QueryDict('a=1&a=2&c=3')
<QueryDict: {'a': ['', ''], 'c': ['']}>
QueryDict.fromkeys()
>>> QueryDict.fromkeys(['a', 'a', 'b'], value='val')
<QueryDict: {'a': ['val', 'val'], 'b': ['val']}>
QueryDict.__geyitem__(key):返回key的值
QueryDict.__contains__(key):允许in运算
QueryDict.lists():与items()类似,只不过它以列表的形式包含字典中每个成员的所有值。
>>> q = QueryDict('a=1&a=2&a=3')
>>> q.lists()
[('a', ['', '', ''])]
QueryDict.urlencode():
>>> q = QueryDict('a=2&b=3&b=5')
>>> q.urlencode()
'a=2&b=3&b=5'
三、HttpResponse对象
向HttpResponse中传递迭代器,将会立即遍历迭代器,转换成字符串后丢弃。如果需要将响应从迭代器流到客户机,则必须使用StreamingHttpResponse类。
添加键值对
>>> response = HttpResponse()
>>> response['Age'] = 120
>>> del response['Age']
HttpResponse.__init__(content='', content_type=None, status=200, reason=None, charset=None):初始化一个response
HttpResponse.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=None, httponly=False, samesite=None):设置cookie
max_age应该是秒数,或者None,如果cookie仅持续客户端的浏览器会话时间,则为0秒(默认)。如果未指定过期,将计算过期时间。
expires可以是“Wdy, DD-Mon-YY HH:MM:SS GMT”格式的字符串,也可以是datetime格式。UTC中的datetime对象。如果expires是datetime对象,则计算max_age。
如果您想设置跨域cookie,请使用domain。例如,domain="example.com"将设置一个cookie,该cookie可以被www.example.com、blog.example.com等域读取。否则,cookie只能被设置cookie的域读取
如果希望阻止客户端JavaScript访问cookie,请使用httponly=True。
HTTPOnly是一个包含在Set-Cookie HTTP响应头中的标志。它不是RFC 2109 cookie标准的一部分,也不是所有浏览器都一致支持它。但是,当它设置时,它可能是一种降低客户端脚本访问受保护cookie数据的风险的有用方法。
使用samesite='Strict'或samesite='Lax'告诉浏览器在执行跨源请求时不要发送此cookie。并不是所有浏览器都支持SameSite。
HttpResponse.set_signed_cookis():与set_cookie()类似,但是在设置cookie之前对其进行加密签名。与HttpRequest.get_signed_cookie()一起使用。您可以使用可选的salt参数来添加键强度,但是您需要记住将它传递给相应的HttpRequest.get_signed_cookie()调用。
HttpResponse.delete_cookie(key,path='/',domain=None):即使cookie不存在也不会被删除。由于cookie的工作方式,路径和域应该与在set_cookie()中使用的值相同——否则cookie可能不会被删除。
四、HttpResponse子类
HttpResponseRedirect():返回状态码302参数url,响应将会被重定向到url
HttpResponsePermanentRedirect():状态码302永久重定向到某个url
HttpResponseNotModified():构造函数不接受任何参数,并且不应该向该响应添加任何内容。使用它可以指定自用户上次请求(状态代码304)以来页面没有被修改。
HttpResponseBadRequest():状态码400,请求错误
HttpResponseNotFound():状态码404,请求出错,页面找不到
HttpResponseForbidden():状态码403
HttpResponseServerError():状态码500,服务器内部错误
Django Request 与Response对象的更多相关文章
- 【转】Django中的request与response对象
关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...
- Request和Response对象
Request 和 Response 对象起到了服务器与客户机之间的信息传递作用.Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏 ...
- java web(三):ServletContext、session、ServletConfig、request、response对象
上一篇讲了Servlet: 1)什么是Servlet[servlet本身就是一种Java类,这种Java类提供了web形式的方法,只要实现了servlet接口的类,都是一种servlet资源.] 2) ...
- spring aop 获取request、response对象
在网上看到有不少人说如下方式获取: 1.在web.xml中添加监听 <listener> <listener-class> org. ...
- SpringMvc4中获取request、response对象的方法
springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...
- springboot的junit4模拟request、response对象
关键字: MockHttpRequest.Mock测试 问题: 在模拟junit的request.response对象时,会报如下空指针异常. 处理方法: 可用MockHttpServletReque ...
- ASP.NET之Request和Response对象
经过了牛腩新闻公布系统和html的学习对B/S开发的流程有了些理解.前面尽管用到了非常多知识.但对制作网页仅仅能说知其然.当学到asp.net视频中的解说才干够说開始知其所以然了. 今天来说说clie ...
- request与response对象.
request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...
- request与response对象详述
request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...
随机推荐
- 【研究】Discuz<3.4任意文件删除漏洞
这里以Discuz3.2为例 关键字:Powered by Discuz! X3.2 时间有限,就不一一截图了,Discuz所有页面全在Discuz_X3.2_SC_UTF8/upload/目录下 利 ...
- 如何写一个简单的webserver(一):最简实现
本文主要讲述如何用C/C++在Linux环境下写一个简单的支持并发的web服务器,并不考虑服务器的健壮性.安全性.性能等一系列因素. 在本文中,该服务器仅支持GET请求. 项目地址:https://g ...
- Linux 后台运行程序 和切换至前台
fg 将后台中的命令调至前台继续运行 jobs查看当前有多少在后台运行的命令 ctrl + z可以将一个正在前台执行的命令放到后台,并且暂停
- opengl键盘回调函数不能获取Ctrl+c的问题
我要令窗口在按下 Ctrl+c 之后关闭. 关键代码如下: /* 这段代码位于键盘回调函数中 */ if ((glutGetModifiers() == GLUT_ACTIVE_CTRL) & ...
- temp脚本
!/bin/bash source ${HOME_DIR}/script/ideploy_dm.inc source ${HOME_DIR}/script/comm_lib home_dir=$(cd ...
- python制作 whl 源文件,并制作本地pip源
制作whl 1.创建用于存放wheel文件目录 mkdir wheels 2.安装wheel库 pip install wheel 3.进入wheels目录 cd wheels 4.使用pip wh ...
- windows下libcurl+openssl编译与使用配置
之前使用过libcurl, 编译也是最简单的版本, 不需要openssl, 即不需要支持https, 所以编译和使用都很正常. 但要使用openssl就很麻烦了, 我花了差不多两天去编译和调用, 记录 ...
- PLC通信网络
PLC通信网络的分层 PLC通信网络大致可分为3层,管理层,单元层以及现场执行(AS-I)层.如下图所示. 在PLC通信网络的三层架构中,管理层,通信方式包括MPI,工业以太网(Profinet)以及 ...
- javascript动态添加表格以及获取数据
<script type="text/javascript"> var dict = { '百度': 'http://wwww.baidu.com', '新浪': 'h ...
- 今天研究Unity Ioc 框架
今天研究Unity Ioc 框架,被自己坑了两个多小时. 运行就报错,反反复复检查了很多次,配置文件,代码都没有问题,也从新写了好几遍. 最后仔细看报错消息才知道,config文件没有生成到目录……… ...