Django----Request对象&Response对象

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)
时间: 2024-08-03 13:37:23

Django----Request对象&Response对象的相关文章

Django Request 与Response对象

Django使用请求和响应对象在系统中传递状态.当请求页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据. 然后Django加载适当的视图,将HttpRequest作为第一个参数传递给视图函数.每个视图都负责返回HttpResponse对象. 一.HttpRequest HttpRequet.schema:所使用的Http协议(http,https) HttpRequest.body:请求体 HttpRequest.path:表示请求页面的完整路径的字符串,不包括

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 对象 - 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对象.

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

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

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

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

Webform 内置对象 Response对象、Request对象,QueryString

Request对象:获取请求Request["key"]来获取传递过来的值 QueryString:地址栏数据传递 ?key=value&key=value注意事项:不需要保密的东西可以传不要传过长东西,因为长度有限,过长会造成数据丢失 Response对象:响应请求Response.Write("<script>alert('添加成功!')</script>");Response.Redirect("Default.asp