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

Как отправить запрос POST с помощью django?

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

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

4b9b3361

Ответ 1

Комбинация методов от 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() преобразует аргументы в процентную кодировку.

Ответ 2

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

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

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

Ответ 4

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

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

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

Ответ 5

Обратите внимание, что когда вы используете 🐍- requests, и выполняйте POST запрос, передавая ваш словарь в параметре data вот так:

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

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

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

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

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