Django中的Request和Response
接触Django这么久了,从来没有好好学习关于Django中的Request和Response对象。借着文件上传下载的相关工作,现在总结一下也不错。
当一个页面请求过来,Django会自动创建一个Request对象,匹配URLconf中对应的view方法,并将这个Request对象作为第一个参数传递给view方法。而view方法会经过一系列操作之后,返回一个Response对象,返回给客户端。
具体的Request对象的属性(attribute)有很多(除了seesion都说只读属性):
- HttpRequest.path—不包括域的全路径,例如:”/music/bands/the_beatles/”
- HttpRequest.method—请求方法,常用的有GET和POST
- HttpRequest.encoding—请求的编码格式,很有用!
- HttpRequest.GET(POST)---见HttpRequest.method
- HttpRequest.REQUEST---类字典的对象,搜索顺序先POST再GET
- HttpRequest.COOKIES---标准的python字典对象,键和值都是字符串。
- HttpRequest.FILES---类字典对象。键是表单提交的name---<input type="file" name="" />而file是一个上传的对象,它的属性有:read,name,size,chunks
- HttpRequest.META---包括标准HTTP头的python字典。如下:
- CONTENT_LENGTH
- CONTENT_TYPE
- HTTP_ACCEPT_ENCODING
- HTTP_ACCEPT_LANGUAGE
- HTTP_HOST — The HTTP Host header sent by the client.
- HTTP_REFERER — The referring page, if any.
- HTTP_USER_AGENT — The client’s user-agent string.
- QUERY_STRING — The query string, as a single (unparsed) string.
- REMOTE_ADDR — The IP address of the client.
- REMOTE_HOST — The hostname of the client.
- REMOTE_USER — The user authenticated by the web server, if any.
- REQUEST_METHOD — A string such as "GET" or "POST".
- SERVER_NAME — The hostname of the server.
- SERVER_PORT — The port of the server.
- HttpRequest.user---当前登录的用户
- HttpRequest.session---一个可读写的类python字典
- HttpRequest.raw_post_data---在高级应用中应用,可以算是POST的一个替代,但是不建议使用。
- HttpRequest.urlconf---默认情况下,是没有定义的
每个Request对象还有一些很有用的方法:
- HttpRequest.get_host()—返回域名,例如:”127.0.0.1:8000″
- HttpRequest.get_full_path()—返回请求的全路径(但是不包括域名),例如:”/music/bands/the_beatles/?print=true”
- HttpRequest.build_absolute_uri(location)—以上2者的结合
- HttpRequest.is_secure()—判断是否为https连接(没有用过)
- HttpRequest.is_ajax()—请求为XMLHttpRequest时,返回True
下面看看HttpResponse的属性(attribute):
- HttpResponse.content—python string对象,尽量用unicode。
- HttpResponse.status_code—HTTP Status code
HttpResponse的方法:
- HttpResponse.has_header(header)
- HttpResponse.set_cookie
- HttpResponse.delete_cookie
- HttpResponse.write(content)
- HttpResponse.flush()
- HttpResponse.tell()
以上说明以后陆续修正吧。
下面一部分是我学习到的东西:告诉浏览器你要下载文件(TELLING THE BROWSER TO TREAT THE RESPONSE AS A FILE ATTACHMENT)!
>>> response = HttpResponse(my_data, mimetype='application/vnd.ms-excel')
>>> response['Content-Disposition'] = 'attachment; filename=foo.xls'
FROM:http://py-bow.appspot.com/?p=20001
Django中的Request和Response的更多相关文章
- 【转】Django中的request与response对象
关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...
- DRF (Django REST framework) 中的Request 与 Response
DRF中的Request 与 Response 1. Request - REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST f ...
- Django中的request到底有啥属性
Django中的request到底有啥属性呢 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将 HttpRequest对象 作为第一个参数传入该函 ...
- LoadRunner中取Request、Response
LoadRunner中取Request.Response LoadRunner两个“内置变量”: 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应 ...
- struts2中获取request、response,与android客户端进行交互(文件传递给客户端)
用struts2作为服务器框架,与android客户端进行交互需要得到request.response对象. struts2中获取request.response有两种方法. 第一种:利用Servle ...
- SpringMvc4中获取request、response对象的方法
springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...
- spring MVC中获取request和response:
spring MVC中获取request和response: HttpServletRequest request = ((ServletRequestAttributes) RequestConte ...
- springMVC中获取request和response对象的几种方式(RequestContextHolder)
springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...
- Falsk中的Request、Response
Flask 中的Response 1.HTTPResponse('helloword') "helloword" from flask import Flask # 实例化Flas ...
随机推荐
- css之relative
一.relative对absolute的限制作用 1.限制left/top/right/bottom定位.absolute默认是在也没的左上角,当父类设定为relative,absolute就被限制在 ...
- ModuleNotFoundError: No module named 'requests'
1.问题描述 DOS 执行 .py 脚本报错: ModuleNotFoundError: No module named 'requests' ModuleNotFoundError: No modu ...
- Java编写一个随机产生小学生四则运算题30道
//注:这个程序还没有实现的地方为分数的计算方法未能实现,只是简单的两个数运算,没有实现多个数,四则运算中的数没有涉及0. package 课堂测试1; import java.io.File; im ...
- mysql 安装问题二:mysqld: Can't create directory 'E:\Software\mysql-5.7.24-winx64\data\' (Errcode: 2 - No such file or directory)
原因:my.ini文件中的basedir(设置mysql的安装目录).datadir(设置mysql数据库的数据的存放目录)与MySQL解压后的路径不一致 解决办法: 将basedir=E:\Soft ...
- 开源框架 ImageLoader +ListView+GridView+RecyclerView 浅解
下载地址 链接:https://pan.baidu.com/s/1ebz99pcuvHg2bODgeOtSbg 提取码:ia39 一.导入jar包或者添加依赖 jar包地址 导入jar包:将下载的ja ...
- hdu4966 最小树形图+虚根
/* 辛辛苦苦调试半天, 过了样例,竟然没有ac!! 网上对比了ac代码,感觉添加一个虚根就能ac 但是想不明白为什么 */ /* 第二天想了下,知道了为什么wa:因为从等级0连到其他课程等级i的不止 ...
- jenkins持续集成:定时构建语法
构建位置:选择或创建工程_设置_构建触发器 1. 定时构建语法:* * * * * (五颗星,多个时间点,中间用逗号隔开)第一个*表示分钟,取值0~59第二个*表示小时,取值0~23第三个*表示一个月 ...
- Python字符串编码转换
使用encode()方法编码 str.encode([encoding="utf-8"][,errors="strict"]) str:表示需要转换的字符串 e ...
- git 小乌龟安装教程
一.windows系统安装git 首先下载git for windows客户端http://msysgit.github.io/ 安装过程没什么特别的,不停next就ok了 图太多就不继续了~ ...
- hive和hbase比较(整理)
hive1.可以理解为一种SQL执行引擎,对SQL的支持最终转换为map/reduce任务2.不支持更新.删除操作,但可以插入3.任务不是实时执行,用时一般为数分钟到数小时4.本身可以不存储数据,只存 ...