1
votes

Comment envoyer une requête POST en utilisant flask.redirect?

J'essaie de créer un service flask dans lequel je souhaite envoyer les données provenant d'une requête request.form vers une autre URL au format json. Quelqu'un peut-il m'aider à atteindre cet objectif?

TypeError: redirect() got an unexpected keyword argument 'json' The above is the error here.

Lorsque j'essaye d'exécuter le code ci-dessus, j'obtiens l'erreur suivante:

redirect(url_for('any_method'), json = json.dumps(my_form_dict))


9 commentaires

Où est exactement le problème? Vous avez déjà la solution, il vous suffit de passer json = request.form dans la première route ...


Non, ce n'est pas la solution. En essayant de courir avec cela, j'obtiens l'erreur suivante: TypeError: redirect () a obtenu un argument de mot-clé inattendu 'json'


Pourriez-vous fournir plus d'informations? Quels sont vos résultats actuels, qu'attendez-vous? Tout message d'erreur, quelques exemples ...


TypeError: redirect () a obtenu un argument de mot clé inattendu 'json' Ce qui précède est l'erreur ici.


Ok, essayez simplement de modifier la question et ajoutez ces détails pour la rendre plus claire.


D'accord, merci pour la suggestion


Votre question n'est pas claire. Essayez-vous de rediriger la requête POST elle-même? Si oui, il n'est pas possible de rediriger les requêtes POST. Pour plus d'informations, cliquez ici .


Merci, @AndrejsCainikovs de m'avoir effacé, oui j'essayais d'envoyer une redirection POST. Votre commentaire a tout effacé maintenant.


Merci d'avoir confirmé. J'ai ajouté mon commentaire en tant que réponse, et ajouterai plus d'informations / liens dès que je les trouverai. Veuillez accepter ma réponse.


3 Réponses :


0
votes

Votre problème est que vous transmettez trop d'arguments à la redirection fonction. Il n'attend que trois paramètres, location , code et Response . Si vous souhaitez transmettre des paramètres supplémentaires, utilisez la méthode Flask url_for :

redirect(url_for('any_method', json=form_json))

Notez la différence, vous passiez le url_for et les champs supplémentaires comme deux paramètres. Dans ma version, j'ai ajouté les champs supplémentaires dans url_for , donc redirect ne reçoit qu'un seul paramètre.


3 commentaires

Cette réponse a-t-elle résolu votre problème? Si oui, veuillez voter et marquer cette réponse comme correcte.


J'ai également essayé le code ci-dessus mais le request.json de flask ne fonctionne pas avec l'étape ci-dessus. Je ne reçois pas le json dans la demande même après avoir utilisé la manière ci-dessus


Jetez un œil à l'objet de requête, peut-être que vous ne l'envoyez pas sous forme de formulaire , essayez d'accéder à request.data



4
votes

Il n'est pas possible de rediriger les requêtes POST. Pour plus d'informations, cliquez ici .


0 commentaires

3
votes

Vous pouvez rediriger les demandes POST en utilisant le code d'état 307. Utilisez:

redirect(url_for('any_method', json=json.dumps(my_form_dict)), code=307)

Pour plus d'informations, reportez-vous à cette réponse: Faire une requête POST lors de la redirection dans flask


0 commentaires