Класс Request

Экземпляр класса Request содержит информацию о входящем запросе к приложению.

Класс Request реализован в модуле google.appengine.ext.webapp.

Класс Request является потомком класса Request библиотеки WebOb. В данном разделе обсуждаются только некоторые возможности этого класса. Для дополнительной информации вы можете обратиться к документации по библиотеке WebOb.

Введение

Класс Request фреймворка webapp является наследником одноименного класса библиотеки WebOb. Фреймворк добавляет к реализации несколько новых методов для получения доступа к полям страничных форм и содержит другие улучшения.

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)

В дополнении к нижеописанным методам, класс Request имеет следующие отличия от своего родителя из библиотеки WebOb:

  • Если не задан заголовок Content-Type, подразумевается использование кодировки UTF-8.
  • Все ошибки при преобразовании полей форм в юникодное представление игнорируются. В конструкторе жестко задан параметр родительского класса unicode_errors='ignore'
  • Название самих полей форм декодируются с использованием той же кодировки, что и их значений. В конструкторе жестко задан параметр: decode_param_names=True

Конструктор

Конструктор класса Request определен следующим образом:

class Request(environ)

Представляет собой данные входящего запроса приложения на фреймворке webapp. Обычно объект приложения WSGIApplication порождает экземпляры классов RequestHandler и инициализирует их соответствующий объект Request данными запроса при помощи помещения их в словарь (environ).

Параметры:

environ
WSGI-совместимый словарь переменных окружения.

Методы экземпляра

Класс Request имеет следующие методы экземпляров:

get(argument_name, default_value='')

Возвращает значение заданного параметра в адресной строке (URL) или в данных запроса типа POST. Если получено несколько параметров с одинаковым именем, возвращается значение первого. Параметры запроса ожидаются в стандартном формате, который используют браузеры для отправки форм.

Параметры:

argument_name
Имя параметра, значение которого необходимо извлечь.
default_value
Значение, которое возвращает метод, если заданный параметр не существует. По умолчанию является пустой строкой.
get_all(argument_name)

Возвращает список всех значений заданного параметра в адресной строке (URL) или данных запроса типа POST. Список может быть пустым.

Параметры:

argument_name
Имя параметра, список значений которого необходимо извлечь.
arguments()

Возвращает список имен параметров в адресной строке (URL) или данных запроса типа POST. Каждый из параметров указывается в списке только один раз, несмотря даже на то, что он может повторяться в исходных данных.

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

Пытается извлечь значение заданного параметра в адресной строке (URL) или данных запроса типа POST и сконвертировать его в целочисленный тип int. Значение приводится к заданному диапазону.

Параметры:

name
Имя параметра, значение которого необходимо извлечь в качестве числового значения.
min_value
Минимальное значение параметра. Если полученное значение меньше заданного, то метод возвращает этот минимум.
max_value
Максимальное значение параметра. Аналогично, если полученное значение больше заданного, то метод возвращает этот максимум.
default
Значение, которое возвращает метод, если у параметра не задано значение.

Переменные экземпляра, унаследованные от класса Request WebOb

Следующий неполный список содержит переменные, унаследованные от базового класса Request библиотеки WebOb. Для дополнительной информации вы можете обратиться к документации по библиотеке WebOb.

body
Тело запроса в формате байтовой строки.
body_file
Тело запроса в формате экземпляра класса StringIO (файловый объект).
remote_addr
IP адрес удаленного пользователя.
url
Полный URL запроса.
path
Часть строки URL, состоящая из данных между именем сервера и параметрами запроса.
query_string
Параметры запроса, все что следует после первого знака ?.
headers
Заголовки запроса как словарь данных. Ключи словаря нечувствительны к регистру символов.
cookies
Данные cookie запроса, также являются словарным объектом.