Как отправить запрос POST, используя django? - PullRequest
26 голосов
/ 15 марта 2011

Я не хочу использовать html файл, но только с django я должен сделать POST-запрос.

Также как urllib2 отправляет запрос get.

Ответы [ 5 ]

31 голосов
/ 15 марта 2011

Комбинация методов из urllib2 и urllib поможет.Вот как я размещаю данные, используя два:

post_data = [('name','Gladys'),]     # a sequence of two element tuples
result = urllib2.urlopen('http://example.com', urllib.urlencode(post_data))
content = result.read()

urlopen () - метод, который вы используете для открытия URL. urlencode () преобразует аргументы в строку в процентах.

30 голосов
/ 12 августа 2014

Вот как вы могли бы написать пример принятого ответа, используя python-requests:

post_data = {'name': 'Gladys'}
response = requests.post('http://example.com', data=post_data)
content = response.content

Гораздо более интуитивно.См. Quickstart для более простых примеров.

6 голосов
/ 31 января 2014

Единственное, на что вы должны смотреть сейчас:

http://docs.python -requests.org / en / latest /

4 голосов
/ 15 марта 2011

Вы можете использовать urllib2 в Django.В конце концов, это все еще питон.Чтобы отправить POST с urllib2, вы можете отправить параметр data (взятый из здесь ):

urllib2.urlopen (url [, data] [, timeout])

[..] HTTP-запрос будет POST вместо GET, если указан параметр данных

0 голосов
/ 05 февраля 2019

Обратите внимание, что при использовании 100 requests и POST запрашивает передачу словаря в параметре data, например:

payload = {'param1':1, 'param2':2}
r = request.post('https://domain.tld', data=payload)

вы передаете параметры form-encoded.

Если вы хотите отправить POST запрос только с JSON (наиболее популярный тип интеграции сервер-сервер), вам нужно указать параметр str() in data. В случае с JSON вам нужно import json lib и сделать так:

 payload = {'param1':1, 'param2':2}
 r = request.post('https://domain.tld', data=json.dumps(payload))`

документация здесь

...