No quiero usar un archivo html
, pero solo con django tengo que hacer una solicitud POST.
Al igual que urllib2
envía una solicitud de get
.
Una combinación de métodos de urllib2 y urllib hará el truco. Así es como publico los datos usando los dos:
post_data = [('name','Gladys'),] # a sequence of two element tuples result = urllib2.urlopen('http://example.com', urllib.urlencode(post_data)) content = result.read()
urlopen () es un método que utiliza para abrir urls. urlencode () convierte los argumentos en cadena codificada en porcentaje.
Así es como escribirías el ejemplo de la respuesta aceptada usando python-requests
:
post_data = {'name': 'Gladys'} response = requests.post('http://example.com', data=post_data) content = response.content
Mucho más intuitivo. Consulte el Inicio rápido para ver ejemplos más simples.
Lo único que debes mirar ahora:
Puedes usar urllib2
en django. Después de todo, todavía es python. Para enviar un POST
con urllib2
, puede enviar el parámetro de data
(tomado de aquí ):
urllib2.urlopen (url [, data] [, timeout])
[..] la solicitud HTTP será un POST en lugar de un GET cuando se proporcione el parámetro de datos
Preste atención, que cuando esté usando requests
🐍, y realice POST
solicitud POST
pasando su diccionario en data
parámetro de data
como este:
payload = {'param1':1, 'param2':2} r = request.post('https://domain.tld', data=payload)
Usted está pasando parámetros form-encoded
.
Si desea enviar POST
solicitud POST
solo con JSON (el tipo más popular en la integración servidor-servidor), debe proporcionar un str()
en data
parámetro de data
. En el caso de JSON, necesitas import json
lib y hacer así:
payload = {'param1':1, 'param2':2} r = request.post('https://domain.tld', data=json.dumps(payload))`
la documentación está aquí