возвращаемое значение всегда отсутствует в скрипте google-app-engine - PullRequest
0 голосов
/ 09 июня 2018

Я использую следующий код для разбора URL в скрипте google-app-engine:

from urlparse import urlparse, parse_qs

def parse_url(url):
            parsed_url = urlparse(url)
            params = parse_qs(parsed_url.query)
            return params

class Handler(webapp2.RequestHandler):
     def get(self):      
        url = self.request.path_info
        params = parse_url(url)
        self.response.write(params) 

Параметры всегда Нет после вызова функции.Однако при использовании точно такого же кода синтаксического анализа внутри обработчика (не как функции) - синтаксический анализ хорош, и я получаю непустой словарь в параметрах.

Есть идеи, почему это могло произойти?

1 Ответ

0 голосов
/ 09 июня 2018

Значение self.request.path_info - это не полный URL-адрес, который необходимо передать до urlparse() для правильного извлечения параметров, в нем отсутствуют параметры запроса, поэтому у вас нет параметров.Он также не работает внутри обработчика, возможно, вы внесли в него некоторые дополнительные изменения.

Чтобы получить параметры, используя ваш parse_url(), передайте полный URL:

    url = self.request.url
    params = parse_url(url)

Но вы должны заметить, что все это довольно ненужно, webapp2 уже содержит анализатор параметров, за исключением того, что он возвращает MultiDict .От Запрос данных :

params

Словарь-подобный объект, объединяющий переменные GET и POST.

Все, что вам нужно сделать, это преобразовать его в реальный диктант, идентичный тому, который производит parse_url():

    self.response.write(dict(self.request.params))
...