request python_python django Request对象

在python django框架中,实现数据通信使用的是Request对象和Response对象。这也是目前前台通讯的主要方式。

当请求一个页面时,Django会建立一个包含请求元数据的 HttpRequest 对象。 当Django 加载对应的视图时,HttpRequest 对象将作为视图函数的第一个参数。每个视图会返回一个HttpResponse 对象。

本文章对HttpRequest对象的API 进行介绍,这些API 定义在django.http 模块中。

HttpRequest 对象

属性

下面除非特别说明,所有属性都认为是只读的。会话(session) 属性是个例外,需要注意。HttpRequest.scheme:一个字符串,表示请求的方案(通常是http 或https)。

HttpRequest.body:一个字节字符串,表示原始HTTP 请求的正文。它对于处理非HTML 形式的数据非常有用:二进制图像、XML等。 如果要处理常规的表单数据,应该使用HttpRequest.POST。

HttpRequest.path:一个字符串,表示请求的页面的完整路径,不包含域名。例如:''/music/bands/the_beatles/''。

HttpRequest.path_info:在某些Web 服务器配置下,主机名后的URL 部分被分成脚本前缀部分和路径信息部分。path_info 属性将始终包含路径信息部分,不论使用的Web 服务器是什么。使用它代替path 可以让代码在测试和开发环境中更容易地切换。

例如,如果应用的WSGIScriptAlias 设置为''/minfo'',那么当path 是''/minfo/music/bands/the_beatles/'' 时path_info 将是''/music/bands/the_beatles/''。HttpRequest.method:一个字符串,表示请求使用的HTTP 方法。必须使用大写。例如:

126851534_1_20180310115740925HttpRequest.GET:一个类似于字典的对象,包含HTTP GET 的所有参数。

HttpRequest.POST:一个包含所有给定的HTTP POST参数的类字典对象,提供了包含表单数据的请求。POST 请求可以带有空的POST 字典 —— 如果通过HTTP POST 方法请求一个表单但是没有包含表单数据的话。因此,不应该使用if request.POST 来检查使用的是否是POST 方法;应该使用if request.method == ''POST''。

HttpRequest.COOKIES:一个标准的Python 字典,包含所有的cookie。键和值都为字符串。

HttpRequest.FILES:一个类似于字典的对象,包含所有的上传文件。FILES 中的每个键为 中的name。注意,FILES 只有在请求的方法为POST 且提交的

带有enctype=''multipart/form-data'' 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象。

HttpRequest.META: 一个标准的Python 字典,包含所有的HTTP 头部。具体的头部信息取决于客户端和服务器,下面是一些示例:CONTENT_LENGTH —— 请求的正文的长度(是一个字符串)。

CONTENT_TYPE —— 请求的正文的MIME 类型。

HTTP_ACCEPT —— 响应可接收的Content-Type。

HTTP_ACCEPT_ENCODING —— 响应可接收的编码。

HTTP_ACCEPT_LANGUAGE —— 响应可接收的语言。

HTTP_HOST —— 客服端发送的HTTP Host 头部。

HTTP_REFERER —— Referring 页面。

HTTP_USER_AGENT —— 客户端的user-agent 字符串。

QUERY_STRING —— 单个字符串形式的查询字符串(未解析过的形式)。

REMOTE_ADDR —— 客户端的IP 地址。

REMOTE_HOST —— 客户端的主机名。

REMOTE_USER —— 服务器认证后的用户。

REQUEST_METHOD —— 一个字符串,例如''GET'' 或''POST''。

SERVER_NAME —— 服务器的主机名。

SERVER_PORT —— 服务器的端口(是一个字符串)。

从上面可以看到,除CONTENT_LENGTH 和CONTENT_TYPE 之外,请求中的任何HTTP 头部转换为META 的键时,都会将所有字母大写并将连接符替换为下划线最后加上HTTP_ 前缀。所以,一个叫做X-Bender 的头部将转换成META 中的HTTP_X_BENDER 键。HttpRequest.session:一个既可读又可写的类似于字典的对象,表示当前的会话。

request请求中基本属性就这么多,下回整理response属性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值