当一个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"] = 20
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("...")

转载于:https://www.cnblogs.com/xiaobingqianrui/p/9894902.html

Django之HttpRequest和HttpReponse相关推荐

  1. 【django】HttpRequest对象

    回想⼀下,利⽤HTTP协议向服务器传参有⼏种途径? a.提取URL的特定部分,如/film/zhangsan/20/,可以在服务器端的路由中⽤正则表达式截取: b.查询字符串(query string ...

  2. Django框架——HttpRequest对象

    目录 1.URL路径参数 2.QueryDict对象 3.查询字符串Query String 4.请求体 5.请求头 6.其他 1.URL路径参数 (1)位置参数:使用正则分组,与视图中的参数一一对应 ...

  3. 【django】HttpRequest对象的属性和路由补充

    文章目录 一.HttpRequest对象的常用属性 1.request.GET:获取查询字符串参数 案例: 特别注意: 2.request.POST:post请求数据,只能获取表单参数 3.reque ...

  4. Django框架(二十)—— Django rest_framework-认证组件

    Django rest_framework-认证组件 一.什么是认证 只有认证通过的用户才能访问指定的url地址,比如:查询课程信息,需要登录之后才能查看,没有登录,就不能查看,这时候需要用到认证组件 ...

  5. Django REST framework 1

    Django REST framework Django REST framework官方文档:点击  中文文档:点击 安装djangorestframework:pip3 install djang ...

  6. 源码剖析Django REST framework的认证方式及自定义认证

    源码剖析Django REST framework的认证方式 由Django的CBV模式流程,可以知道在url匹配完成后,会执行自定义的类中的as_view方法. 如果自定义的类中没有定义as_vie ...

  7. [Django青铜修炼手册] 初识Django

    Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站!采用了MVC的框架模式,即模型M,视图V和控制器C,也可以称为MVT模式,模型M,视图V,模板T.在学 ...

  8. 深入Django(1): 通用视图 (generic views)

    如果对Django的基础部分尚不熟悉,请参考<Django实战>系列. 内容提要 1. 回顾Django的视图函数(view function) 2. 在视图函数中使用模板 3. 简化视图 ...

  9. Django REST framework 源码解析

    先放图,放图说话,可能有点长 主流程 这个颜色 从setting导入默认数据流程是 这个颜色 主流程大概流程写一下:as_view 实际返回view,并把参数{"get":&quo ...

  10. Django中的request和response

    1.Django的架构 核心是middleware(中间件),django所有的请求.返回都由中间件来完成. 中间件,就是处理HTTP的request和response的,类似插件,比如有Reques ...

最新文章

  1. R语言sys方法:sys.chmod函数改变指定文件的权限、Sys.Date函数返回系统的当前日期、Sys.time函数返回系统的当前时间
  2. java 枚举 被继承_enum不能被继承
  3. codeforces Cable Connection
  4. [css] img标签是行内元素,为什么却能设置宽高
  5. 使用WAMP5搭建Apache+MySQL+PHP环境
  6. Oracle日期类型转换格式
  7. 使用mapReduce分析简单天气数据
  8. python : pandas库的后继者polars库
  9. python屏幕找图_Python实现按键精灵(二)-找图找色
  10. 萤火虫(FA)算法(附完整Matlab代码,可直接复制)
  11. 逆向之Smali入门学习
  12. python脚本编程基础读后感_Python入门经典的读后感10篇
  13. 计算机桌面有扫描图标如何开始扫,如何使用扫描仪扫描文件
  14. 无视硬件检测直接运行Win10混合现实门户
  15. Zbrush中常用的8种笔刷,笔刷中的八大金刚你用过几个?
  16. 兼容IE系列浏览器的CSS Hack
  17. 自动化测试——执行javaScript脚本
  18. 这10个问题帮你搞清楚SaaS是什么
  19. 采购计算机硬件的理论,计算机硬件采购合同要点分析.doc
  20. 开箱——Amazon Lightsail(远程云桌面)

热门文章

  1. 如何解决Configuration system failed to initialize
  2. Illustrator中文版教程,如何在 Illustrator 中为创建的图形添加颜色?
  3. Illustrator 教程,如何在 Illustrator 中编辑路径和形状?
  4. 如何在macOS中查找和删除潜在的驱动程序冲突?
  5. Texpad for Mac(LaTeX编辑器软件)
  6. Mac屏幕常亮时间控制:Theine
  7. 如何在M1 Mac上安装iPhone或iPad应用程序?
  8. 如何在M1上运行较早的非本机Intel x86应用
  9. 想要轻松制作GIF图片,来看篇超全面的分析!
  10. Mac如何解压rar,zip等各种格式文件