[python] Obtenir json d'une vue en l'appelant d'une autre vue



Answers

Votre vue a return jsonify(...) à la fin de celui-ci. jsonify renvoie une Response avec des données JSON, elle ne renvoie pas directement les données brutes. Vous pouvez ré-analyser les données JSON à partir de l'objet de réponse, ou vous pouvez séparer la fonction qui génère des données de la vue qui renvoie une réponse.

from flask import json
r = get_promoter(id)
data = json.loads(r.data, encoding=r.charset))
# or separate the data from the view
def get_promoter(id):
    return json.dumps(...)

@app.route(...)
def promoter(id):
    return jsonify(**get_promoter(id))

@app.route(...)
def other_view():
    promoter = get_promoter(400617)
    ...

D'autres vues peuvent renvoyer d'autres types de données. jsonify arrive à retourner un objet Response , mais d'autres valeurs de retour valides sont des chaînes (de render_template , par exemple) et des tuples. Chacun d'entre eux sera transformé en Responses lorsque Flask gère une requête, mais lorsque vous appelez simplement les fonctions d'affichage, elles renvoient tout ce qu'elles retournent, ce qui peut être une Response .

Question

J'ai une vue qui renvoie des données JSON. Je veux aussi obtenir ces données d'une autre vue, alors j'ai essayé d'appeler la vue JSON. Toutefois, une Response été renvoyée plutôt que les données JSON. Comment puis-je appeler une vue d'une autre vue et obtenir les données?

@app.route('/promoters/<int:id>', methods=['GET'])
def get_promoter(id):
    ...

>>> get_promoter(3)
<Response 440 bytes [200 OK]>



Links



Tags

python python   flask flask