Je ne veux pas utiliser le fichier html
, mais seulement avec Django, je dois faire une demande POST.
Tout comme urllib2
envoie une requête get
.
Une combinaison de méthodes d'urllib2 et d'urllib fera l'affaire. Voici comment je poste des données en utilisant les deux:
post_data = [('name','Gladys'),] # a sequence of two element tuples
result = urllib2.urlopen('http://example.com', urllib.urlencode(post_data))
content = result.read()
urlopen () est une méthode que vous utilisez pour ouvrir des URL . urlencode () convertit les arguments en chaînes codées en pourcentage.
Voici comment écrire l'exemple de la réponse acceptée à l'aide de python-requests
:
post_data = {'name': 'Gladys'}
response = requests.post('http://example.com', data=post_data)
content = response.content
Beaucoup plus intuitif. Voir le Quickstart pour des exemples plus simples.
La seule chose que vous devriez regarder maintenant:
Vous pouvez utiliser urllib2
dans Django. Après tout, c'est toujours du python. Pour envoyer une POST
avec urllib2
, vous pouvez envoyer le paramètre data
(tiré de ici ):
urllib2.urlopen (url [ données] [ délai d'attente])
[..] la requête HTTP sera un POST au lieu d'un GET lorsque le paramètre data est fourni
Faites attention, quand vous utilisez ???? requests
, et faites la demande POST
en passant votre dictionnaire dans le paramètre data
comme ceci:
payload = {'param1':1, 'param2':2}
r = request.post('https://domain.tld', data=payload)
vous transmettez les paramètres form-encoded
.
Si vous souhaitez envoyer une demande POST
avec uniquement JSON (type le plus courant d'intégration serveur à serveur), vous devez fournir un paramètre str()
dans data
. Dans le cas de JSON, vous devez import json
lib et faire comme ceci:
payload = {'param1':1, 'param2':2}
r = request.post('https://domain.tld', data=json.dumps(payload))`
documentation est ici