Возвращаемое значение всегда отсутствует в скрипте google-app-engine
Я использую следующий код для анализа 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 ответ
self.request.path_info
значение не является полным URL-адресом, который необходимо передать urlparse()
для правильного извлечения параметров у него удаляются параметры запроса, поэтому у вас нет параметров. Он также не работает внутри обработчика, возможно, вы сделали некоторые дополнительные изменения, так как вы попробовали это.
Чтобы получить параметры, используя ваш parse_url()
передать полный URL:
url = self.request.url
params = parse_url(url)
Но вы должны заметить, что все это довольно ненужно, webapp2
уже включен анализатор параметров, за исключением того, что он возвращает MultiDict. Из данных запроса:
Титулы
Словарь-подобный объект, объединяющий переменные GET и POST.
Все, что вам нужно сделать, это преобразовать его в реальный диктант, идентичный тому, который ваш parse_url()
производит:
self.response.write(dict(self.request.params))