¿Cómo enviar una solicitud POST usando django?

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:

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

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í