Я не хочу использовать файл html
, но только с django я должен сделать запрос POST.
Так же, как urllib2
отправляет запрос get
.
Я не хочу использовать файл html
, но только с django я должен сделать запрос POST.
Так же, как urllib2
отправляет запрос get
.
Комбинация методов от 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() преобразует аргументы в процентную кодировку.
Вот как вы могли бы написать принятый пример ответа, используя python-requests
:
post_data = {'name': 'Gladys'}
response = requests.post('http://example.com', data=post_data)
content = response.content
Гораздо более интуитивно понятный. См. Quickstart для более простых примеров.
Единственное, на что вы должны обратить внимание:
Вы можете использовать urllib2
в django. В конце концов, это все еще питон. Чтобы отправить POST
с помощью urllib2
, вы можете отправить параметр data
(взятый из здесь):
urllib2.urlopen(url [, data] [, timeout])
[..] HTTP-запрос будет POST вместо GET, когда предоставлен параметр данных
Обратите внимание, что когда вы используете 🐍- 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))'
документация здесь