web-dev-qa-db-fra.com

Comment recevoir des données POST dans django

J'ai essayé d'intégrer une passerelle de paiement dans mon site à Django. J'ai du mal à obtenir les données de réponse de la passerelle de paiement.

La passerelle de paiement a des exemples de documents pour php qui ressemblent à ceci:

$ErrorTx = isset($_POST['Error']) ? $_POST['Error'] : '';               //Error Number
$ErrorResult = isset($_POST['ErrorText']) ? $_POST['ErrorText'] : '';   //Error message
$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : '';     //Payment Id

Dans la vue de l'URL vers laquelle la passerelle de paiement est redirigée après avoir entré les détails de la carte, etc., je vérifie s'il s'agit d'un GET if request.method == "GET" puis en passant la requête à une fonction. Lorsque je débogue la demande, je peux voir un dict de requête vide. et si j'essaye quelque chose comme res = request.GET ['paymentid'] j'obtiens une erreur qui dit qu'il n'y a pas de clé appelée paymentid.

Suis-je en train de manquer quelque chose d'évident? Je suis encore assez nouveau à Django, donc je suis sûr que je fais quelque chose de mal.

17
hydeous

res = request.GET['paymentid'] Lèvera un KeyError si paymentid n'est pas dans les données GET.

Votre exemple de code php vérifie si paymentid se trouve dans les données POST, et définit $payID Sur '' sinon:

$payID = isset($_POST['paymentid']) ? $_POST['paymentid'] : ''

L'équivalent dans python est d'utiliser la méthode get() avec un argument par défaut:

payment_id = request.POST.get('payment_id', '')

lors du débogage, voici ce que je vois dans le response.GET: <QueryDict: {}>, request.POST: <QueryDict: {}>

Il semble que le problème n'accède pas aux données POST, mais que il n'y ait pas de données POST . Comment procédez-vous au débogage? Utilisez-vous votre navigateur ou est-ce la passerelle de paiement accédant à votre page? Il serait utile que vous partagiez votre point de vue.

Une fois que vous parvenez à soumettre des données de publication sur votre page, il ne devrait pas être trop difficile de convertir l'exemple de php en python.

32
Alasdair

Vous devez avoir accès au dictionnaire POST sur l'objet de requête.

1
kafuchau