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‘: [‘1‘, ‘2‘], ‘c‘: [‘3‘]}>

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‘, [‘1‘, ‘2‘, ‘3‘])]

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,服务器内部错误

原文地址:https://www.cnblogs.com/SunQi-Tony/p/10009422.html

时间: 2024-08-28 21:13:37

Django Request 与Response对象的相关文章

Request和Response对象

最早接触Request和Response对象的时候是听王勇老师将Servlet的时候,我们编写一个Servlet类.我们在浏览器端发送一个url请求之后,会调用Servlet类对这个请求做相应的处理,Servlet类就是通过重写的service()方法来实现的,而我们知道的Request和Response对象就是作为service()方法的参数传入的.   1.整体印象 2.Request对象 Request对象的主要职责是获得HTTP请求中封装的信息,获得url和表单参数:还有一个功能就是对页

ASP.NET之Request和Response对象

经过了牛腩新闻公布系统和html的学习对B/S开发的流程有了些理解.前面尽管用到了非常多知识.但对制作网页仅仅能说知其然.当学到asp.net视频中的解说才干够说開始知其所以然了. 今天来说说client与server之间进行交流用到的Request和Response对象. Request:用户在client使用Web浏览器向Web应用程序发出请求时,会将client信息发给server.server收到一个HTTP请求,包括了全部查询字符串參数或表单參数.Cookie数据以及浏览器信息. 在a

request与response对象.

request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在我们Servlet中使用的request与response HttpServletRequest接口------>父接口  ServletRequest HttpServletResponse接口----->父接口  ServletResponse 在tomcat中它采用门面模式对requst,r

Flask 的 request 和 response 对象

Request 和 Response 对象的属性中,有一些是元数据,有一些是解析后的数据,还有一些只是链接. Request method 起始行,元数据 host 起始行,元数据 path 起始行,元数据 environ 其中的 SERVER_PROTOCOL 是起始行,元数据 headers 头,元数据 data body, 元数据 remote_addr 客户端地址 args 请求链接中的参数(GET 参数),解析后 form form 提交中的参数,解析后 values args 和 f

获得request、response对象的三种方法

方法一 //struts获取方法 // HttpServletRequest request = ServletActionContext.getRequest(); //  HttpServletResponse response = ServletActionContext.getResponse(); 方法二 //SpringMvc获取方法 HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolde

python 视图 (FBV、CBV ) 、Request 和Response对象 、路由系统

一.FBV和CBV1.基于函数的view,就叫FBV(Function Based View) 示例: def add_book(request): pub_obj=models.Publisher.objects.all() #从数据库获取全部出版社对象 if request.method=='POST': add_name=request.POST.get('book_name') pub_id=request.POST.get('pub_id') models.Book.objects.c

request和response对象的具体介绍

Request 对象 - request 对象表示 HTTP 请求,包含了请求查询字符串,参数,内容,HTTP 头部等属性.常见属性有: req.app:当callback为外部文件时,用req.app访问express的实例 req.baseUrl:获取路由当前安装的URL路径 req.body / req.cookies:获得「请求主体」/ Cookies req.fresh / req.stale:判断请求是否还「新鲜」 req.hostname / req.ip:获取主机名和IP地址 r

request和response对象如何解决中文乱码问题?

出现中文乱码的问题,一般的原因编码和和解码不一致造成的. 1 /* 2 乱码:编码和解码不一致导致的 3 GET:你好 4 POST:?????? 5 tomcat版本:8.5及以上版本 6 GET请求方式,request对象使用的字符集默认为utf-8 7 POST请求方式,request对象使用的字符集默认为ISO8859-1 8 解决: 9 设置request对象的字符集为utf-8 10 request.setCharacterEncoding("utf-8"); 11 tom

在springMVC的controller中获取request,response对象的一个方法

使用springMVC的时候,有些时候会需要获取请求或者响应对象,例如在身份验证的时候,需要获取请求头中的token,在做登录系统的时候需要使用response对象向客户端添加cookie,一个有效的做法是在controller的方法中添加对应参数如下所示: @RestController public class Test2Contrller { @RequestMapping("/test") public void test(HttpServletRequest req, Htt