当一个web请求链接进来时,django会创建一个HttpRequest对象来封装和保存所有请求相关的信息,并且会根据请求路由载入匹配的试图函数,每个请求的试图函数都会返回一个HttpResponse对象。

  HttpRequest和HttpReponse类都包含在django.http包中

1. HttpRequest类

HttpRequest属性

HttpRequest.scheme
请求协议(http或者https)
HttpRequest.body
以字节的方式返回请求体内容;可以通过HttpRequest.POST获取处理后的key和value,也可以通过HttpRequest.read()格式化
HttpRequest.path
返回请求的完整路径,不包括协议和域名
HttpRequest.GET
GET请求参数,返回一个queryDict对象
HttpRequest.POST
获取表单提交的数据,如果是通过POST请求提交的其它非表单数据,可以使用HttpRequest.Body获取;使用时可以通过if request.method == "PSOT"来进行预判断
HttpRequest.method
返回请求方式
HttpRequest.environ
返回一个字典,包含所有django运行的环境信息
HttpRequest.content_type
文件格式
HttpRequest.content_params
参数
HttpRequest.COOKIES
返回一个字典,包含浏览器存储的所有cookie
HttpRequest.FILES
返回一个MultiValueDict,包含上传的文件
HttpRequest.META
返回一个包含所有请求相关信息的字典(包含Headers),同environ
HttpRequest.resolver_match
返回请求处理的url及相关参数
HttpRequest.session
中间件,设置session,一个可读可写的字典对象
HttpRequest.get_host()
获取请求的主机和端口
HttpRequest.get_port()
获取端口
HttpRequest.get_full_path()
返回完整路径,同path
HttpRequest.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
获取以一个cookie
HttpRequest.is_ajax()
判断是否为ajax请求
HttpRequest.is_secure()
判断是否为https请求

2. HttpResponse类

  HttpResponse类用于设置响应头和响应内容,它分为实例化对象、填充设置以及返回三个部分

from django.http import HttpResponse

# 实例化一:
responseOne = HttpResponse("this is a http response")
# 实例化二:
responseTwo = HttpResponse()
responseTwo.write("this is another http response")
responseTwo.writelines(["this is second line", "this is third line"])
# 设置响应头
responseOne["Age"] =
responseOne["app"] = "sample"
del responseOne["app"] # 设置响应头
responseOne["content_type"] = 'application/vnd.ms-excel'
responseOne['Content-Disposition'] = 'attachment; filename="foo.xls"' responseOne.set_cookie("date", "2018-08-21", path="/page", ) # 设置cookie
responseOne.delete_cookie("date") # 删除cookie
# 有关对象
print(responseOne) # HttpResponse
print(responseOne.items()) # dict_values
print(responseOne.cookies) # cookie
print(responseOne.content) # 内容(字节)
print(responseOne.charset) # 编码
print(responseOne.status_code) # 状态码
print(responseOne.streaming) # 是否为流
print(responseOne.closed) # 是否已发送response
print(responseOne.serialize()) # 序列化响应头和相应内容
print(responseOne.serialize_headers()) # 序列化响应头
print(responseOne.get("Age")) # 获取响应头中的某个键值对
print(responseTwo.getvalue()) # 获取相应的内容 # 将response设置为流数据处理
responseTwo.readable()
responseTwo.seekable()
responseTwo.write("...")

最新文章

  1. .Net MVC 网站中配置文件的读写
  2. 计算sql语句的查询时间
  3. HDU 4941 Magical Forest(2014 Multi-University Training Contest 7)
  4. bean之间的关系:继承、依赖
  5. 多个App间传递数据
  6. MVC知识点02
  7. fragment 切换
  8. 使用lftp传输文件的shell脚本
  9. [转]window.opener用法
  10. BZOJ2837 : 小强的形状
  11. RestSharp用法小结
  12. WSAWaitForMultipleEvents()
  13. Handsontable通用方法
  14. A - Piece of Cake Kattis - pieceofcake (数学)
  15. Go 初体验 - channel.1 - 基本用法
  16. 检验两个随机序列的beta系数
  17. mysql 排序 oder by 和 使用hibernate 排序
  18. 使用GIT SUBTREE集成项目到子目录(转)
  19. OO第三次阶段性总结
  20. python ros 关闭节点

热门文章

  1. 浏览器 Event对象 及 属性 的兼容处理
  2. grads 新老版本目录对比
  3. bug最后汇总-2018/08/03
  4. linux命令(6/8):crontab命令
  5. MySQL Binlog解析(2)
  6. NOIP 统计单词个数
  7. NOIP 合唱队形
  8. 华丽的使用sublime写lua~ sublime lua相关必装插件推荐~~
  9. java jvm内存管理/gc策略/参数设置
  10. Python caffe.TEST Example(Demo)