前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django之HttpRequest和HttpReponse

Django之HttpRequest和HttpReponse

作者头像
全栈程序员站长
发布2022-07-18 15:15:09
3370
发布2022-07-18 15:15:09
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是全栈君

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

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

1. HttpRequest类

HttpRequest属性

代码语言:javascript
复制
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类用于设置响应头和响应内容,它分为实例化对象、填充设置以及返回三个部分

代码语言:javascript
复制
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://javaforall.cn/120065.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. HttpRequest类
    • HttpRequest属性
    • 2. HttpResponse类
    相关产品与服务
    消息队列 TDMQ
    消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档