My favorites | 中文(简体) | Sign in

Request 类

Request 类的实例包含有关传入的网络请求的信息。

Requestgoogle.appengine.ext.webapp 模块提供。

Request 类继承自 WebOb Request 类。这里只讨论 WebOb Request 类的几个功能。有关详细信息,请参阅 WebOb 文档

简介

由 webapp 提供的 Request 类继承自 WebOb Request 类。webapp 添加了多种新方法以访问由网络表单提交的参数,且可扩展多项默认行为。

class MyRequestHandler(webapp.RequestHandler):
  def get(self):
    self.response.out.write('''
    <html>
      <body>
        <form action="post">
          <p>Name: <input type="text" name="name" /></p>
          <p>Favorite foods:</p>
          <select multiple size="4">
            <option value="apples">Apples</option>
            <option value="bananas">Bananas</option>
            <option value="carrots">Carrots</option>
            <option value="durians">Durians</option>
          </select>
          <p>Birth year: <input type="text" name="birth_year" /></p>
        </form>
      </body>
    </html>
    ''')

  def post(self):
    name = self.request.get("name")
    favorite_foods = self.request.get_all("favorite_foods")
    birth_year = self.request.get_range("birth_year",
                                        min_value=1900,
                                        max_value=datetime.datetime.utcnow().year,
                                        default_value=1900)

除了下面所描述的几种新方法外,webapp Request 类与 WebOb Request 还有以下区别:

  • 如果未在该请求的内容类型标头中指定字符集,则假定 UTF-8 为其字符集。
  • 忽略将表单参数解码为 Unicode 时发生的错误。构造函数会强制为 WebOb Request 构造函数分配以下参数:unicode_errors='ignore'
  • 表单参数键会使用与值相同的字符集予以解码。构造函数会强制为 WebOb Request 构造函数分配以下参数:decode_param_names=True

构造函数

Request 类的构造函数的定义如下:

class Request(environ)

对 webapp 应用程序的传入的请求。通常,WSGIApplication 会实例化一个 RequestHandler 并通过一个用 WSGI 兼容的环境参照表 (environ) 填充的 Request 对象对其进行初始化。

参数:

environ
WSGI 兼容的环境参照表。

实例方法

Request 类提供以下实例方法:

get(argument_name, default_value='')

返回查询(网址)的值或具有指定名称的 POST 参数。如果多个参数具有同一个名称,会返回第一个参数的值。网址和请求正文会采用网络浏览器用来提交表单的标准格式。

参数:

argument_name
要获取的参数名称。
default_value
指定名称的参数不存在时该方法应当返回的值。默认为空字符串。
get_all(argument_name)

返回所有查询(网址)的值的列表或具有指定名称的 POST 参数,可能返回一个空列表。

参数:

argument_name
要获取的参数名称。
arguments()

返回查询(网址)的名称列表或 POST 数据参数。即使数据包含具有同一名称的多个参数,该参数名称也仅在列表中显示一次。

get_range(name, min_value=None, max_value=None, default=0)

将该查询(网址)或具有指定名称的 POST 数据参数解析为 int 并将其返回。该值会进行标准化,以适合指定范围(如果有的话)。

参数:

name
要作为整数获取的参数名称。
min_value
该参数的最小值。如果值小于此最小值,该方法会返回最小值。
max_value
该参数的最大值。如果值大于此最大值,该方法会返回最大值。
default
指定名称的参数不存在时要返回的值。

继承自 WebOb Request 的实例变量

以下是继承自 WebOb Request 类的实例变量成员的部分列表。有关详细信息,请参阅 WebOb 文档

body
请求正文,字节字符串形式。
body_file
请求正文,StringIO 实例形式(类似于文件的对象)。
remote_addr
远程用户的 IP 地址。
url
完整请求网址。
path
在托管名称和查询参数之间的网址路径。
query_string
网址的查询参数,第一个 ? 后的全部内容。
headers
请求标头,是一种类似于参照表的对象。Key 不区分大小写。
cookies
请求中的 cookie 数据,是一种类似于参照表的对象。