接触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. CSS弹性(flexible)盒子

    弹性盒子         弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成 弹性容器通过display:flex | inline-flex将其定义为弹性容器 ...

  2. bat如何实现图片与名字匹配重命名

    背景:有一批图片按顺序截取,需要按照规定的名称进行重名命. 问题:用批处理怎么实现呢?(公司电脑手动重名时,卡的不要不要的) No1:解决:将规定的名称放入criterion.txt中,将批处理Ren ...

  3. 将Maven项目打包成可执行jar文件(引用第三方jar)

    方法一. mvn assembly 或 mvn package (一个jar包) 把依赖包和自己项目的文件打包如同一个jar包(这种方式对spring的项目不支持) <build>     ...

  4. CF1000G

    蜜汁树形dp... 首先分析一下:他要求一条边至多只能经过两次,那么很容易会发现:从x到y这一条路径上的所有边都只会被经过一次.(如果过去再回来那么还要过去,这样就三次了,显然不合法) 那么其他能产生 ...

  5. shell设置连接服务器永不超时

    1.打开/etc/ssh/sshd_config vim /etc/ssh/sshd_config   2.设置如下内容: MaxAuthTries 60 MaxSessions 3 ClientAl ...

  6. redis 单实例安装

    单实例安装 近些年,由于内存技术的提升.造价的下降,越来越多企业的服务器内存已增加到几百G.这样的内存容量给了内存数据库一个良好的发展环境. 而使用Redis是内存数据库的一股清流,渐有洪大之势.下面 ...

  7. Android取得系统时间

    Time t = new Time();//实例化Time类 t.setToNow();//取得当前的系统时间 int month = t.month;//获取月 int year = t.year; ...

  8. C. cltt的幸运数LCAdfs

    /*C: cltt的幸运数 Time Limit: 1 s      Memory Limit: 128 MB Submit Problem Description 一棵树有n个节点,共m次查询,查询 ...

  9. 查看CPU 内存 硬盘 网络 查看进程使用的文件 uptime top ps -aux vmstat iostat iotop nload iptraf nethogs

    #安装命令 yum install  sysstat #包含 iostat vmstat yum install iotop yum install  nload yum install iptraf ...

  10. vi/vim键盘对应图

    来源:http://www.runoob.com/linux/linux-vim.html