接触Django这么久了,从来没有好好学习关于Django中的Request和Response对象。借着文件上传下载的相关工作,现在总结一下也不错。
当一个页面请求过来,Django会自动创建一个Request对象,匹配URLconf中对应的view方法,并将这个Request对象作为第一个参数传递给view方法。而view方法会经过一系列操作之后,返回一个Response对象,返回给客户端。
具体的Request对象的属性(attribute)有很多(除了seesion都说只读属性):

  1. HttpRequest.path—不包括域的全路径,例如:”/music/bands/the_beatles/”
  2. HttpRequest.method—请求方法,常用的有GET和POST
  3. HttpRequest.encoding—请求的编码格式,很有用!
  4. HttpRequest.GET(POST)---见HttpRequest.method
  5. HttpRequest.REQUEST---类字典的对象,搜索顺序先POST再GET
  6. HttpRequest.COOKIES---标准的python字典对象,键和值都是字符串。
  7. HttpRequest.FILES---类字典对象。键是表单提交的name---<input type="file" name="" />而file是一个上传的对象,它的属性有:read,name,size,chunks
  8. 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.
  9. HttpRequest.user---当前登录的用户
  10. HttpRequest.session---一个可读写的类python字典
  11. HttpRequest.raw_post_data---在高级应用中应用,可以算是POST的一个替代,但是不建议使用。
  12. HttpRequest.urlconf---默认情况下,是没有定义的

每个Request对象还有一些很有用的方法:

  1. HttpRequest.get_host()—返回域名,例如:”127.0.0.1:8000″
  2. HttpRequest.get_full_path()—返回请求的全路径(但是不包括域名),例如:”/music/bands/the_beatles/?print=true”
  3. HttpRequest.build_absolute_uri(location)—以上2者的结合
  4. HttpRequest.is_secure()—判断是否为https连接(没有用过)
  5. HttpRequest.is_ajax()—请求为XMLHttpRequest时,返回True

下面看看HttpResponse的属性(attribute):

  1. HttpResponse.content—python string对象,尽量用unicode。
  2. HttpResponse.status_codeHTTP Status code

HttpResponse的方法:

  1. HttpResponse.has_header(header)
  2. HttpResponse.set_cookie
  3. HttpResponse.delete_cookie
  4. HttpResponse.write(content)
  5. HttpResponse.flush()
  6. 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的更多相关文章

  1. 【转】Django中的request与response对象

    关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...

  2. DRF (Django REST framework) 中的Request 与 Response

    DRF中的Request 与 Response 1. Request - REST framework 传入视图的request对象不再是Django默认的HttpRequest对象,而是REST f ...

  3. Django中的request到底有啥属性

    Django中的request到底有啥属性呢 Request 我们知道当URLconf文件匹配到用户输入的路径后,会调用对应的view函数,并将  HttpRequest对象  作为第一个参数传入该函 ...

  4. LoadRunner中取Request、Response

    LoadRunner中取Request.Response LoadRunner两个“内置变量”: 1.REQUEST,用于提取完整的请求头信息. 2.RESPONSE,用于提取完整的响应头信息. 响应 ...

  5. struts2中获取request、response,与android客户端进行交互(文件传递给客户端)

    用struts2作为服务器框架,与android客户端进行交互需要得到request.response对象. struts2中获取request.response有两种方法. 第一种:利用Servle ...

  6. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  7. spring MVC中获取request和response:

    spring MVC中获取request和response: HttpServletRequest request = ((ServletRequestAttributes) RequestConte ...

  8. springMVC中获取request和response对象的几种方式(RequestContextHolder)

    springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...

  9. Falsk中的Request、Response

    Flask 中的Response 1.HTTPResponse('helloword') "helloword" from flask import Flask # 实例化Flas ...

随机推荐

  1. 尚硅谷《全套Java、Android、HTML5前端视频》

    尚硅谷<全套Java.Android.HTML5前端视频> (百万谷粉推荐:史上最牛.最适合自学的全套视频.资料及源码) [尚硅谷官网资料导航] 谷粒学院在线学习:http://www.g ...

  2. 洛谷P2014 选课

    首先分析题目,这是一道树形dp的题目,是树形背包类的问题,以为每门课的先修课只有一门,所以这一定可以 构成一个森林结构,于是我们可以设计一个虚拟的根节点作为森林的根. 状态转移方程如下 dp[v][k ...

  3. Python基础之初识类和对象

    我们在前面学习了解了面向过程编程,接下来我们一起来学习一下面向对象编程.其实不管是面向过程,还是面向对 象,说白了就是一种编程方式而已.既然是面向对象编程,顾名思义,此编程方式的落地需要使用 “类” ...

  4. 3种vue路由传参的基本模式

    路由是连接各个页面的桥梁,而参数在其中扮演者异常重要的角色,在一定意义上,决定着两座桥梁是否能够连接成功. 在vue路由中,支持3中传参方式. 场景,点击父组件的li元素跳转到子组件中,并携带参数,便 ...

  5. PHP编译安装时常见错误解决办法

    转载自:http://www.bkjia.com/PHPjc/1008013.html This article is post on https://coderwall.com/p/ggmpfa c ...

  6. ajax之全局函数

    1.全局函数:$.each(array,function(){1,value}),通过$/jQuery直接调用 对象函数:$("#name").val(); jQuery UI:$ ...

  7. mysql5.7 root用户默认密码

    1. 查找密码 Mysql 5.7 在自动初始化数据库的时候,会生成root用户的默认密码. 通过 grep "temporary password" /var/log/mysql ...

  8. 蓝桥杯  历届试题 幸运数  dfs

    历届试题 幸运数 时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2, ...

  9. Squid作代理服务器,用户密码验证,高匿代理

    参考URL: https://www.cnblogs.com/vijayfly/p/5800038.html https://www.cnblogs.com/operaculus/p/5705184. ...

  10. 数据库vertica 脚本方式的导入导出

    需要进入vsql下的: 导入: copy emp from '/tmp/emp.csv' DELIMITER ',' ESCAPE AS '\' ENCLOSED BY '"' DIRECT ...