Подтвердить что ты не робот

Лучший способ получить строку запроса из URL-адреса в python?

Мне нужно получить строку запроса с этого URL-адреса https://stackoverflow.com/info/ask?next=1&value=3, и я не хочу использовать request.META. Я понял, что есть еще два способа получить строку запроса:

  1. Использование urlparse urlparse.urlparse(url).query

  2. Использование url encode Используйте urlencode и передайте в него параметр param. request, чтобы получить строковое представление.

Так какой путь лучше? Мои коллеги предпочитают urlencode, но не предоставили удовлетворительного объяснения. Они утверждают, что urlparse вызывает urlencode внутри, что я не уверен в том, что urlencode живет в модуле urllib.

4b9b3361

Ответ 1

Вы можете создать строку запроса с использованием параметров GET, таких как

request.GET.urlencode()

Это не включает префикс ?, и он может не возвращать ключи в том же порядке, что и в исходном запросе.

Ответ 2

Третий вариант:

>>> from urlparse import urlparse, parse_qs
>>> url = 'http://something.com?blah=1&x=2'
>>> urlparse(url).query
'blah=1&x=2'
>>> parse_qs(urlparse(url).query)
{'blah': ['1'], 'x': ['2']}

В Python 3+ это доступно как:

from urllib.parse import parse_qs

Документация для urllib.parse

Ответ 4

вы также можете использовать request.arg также

if 'next' in request.arg and 'values' in request.arg:
    next = request.arg.get('next', '')
    value = request.arg.get('value', '')