J'utilise Flask et je retourne un fichier XML à partir d'une requête get. Comment définir le type de contenu?
par exemple
@app.route('/ajax_ddl')
def ajax_ddl():
xml = 'foo'
header("Content-type: text/xml")
return xml
J'utilise Flask et je retourne un fichier XML à partir d'une requête get. Comment définir le type de contenu?
par exemple
@app.route('/ajax_ddl')
def ajax_ddl():
xml = 'foo'
header("Content-type: text/xml")
return xml
Essayez comme ça:
from flask import Response
@app.route('/ajax_ddl')
def ajax_ddl():
xml = 'foo'
return Response(xml, mimetype='text/xml')
Le type de contenu réel est basé sur le paramètre mimetype et le jeu de caractères (par défaut, UTF-8).
Les objets réponse (et requête) sont documentés ici: http://werkzeug.pocoo.org/docs/wrappers/
J'aime et j'ai bien voté la réponse de @Simon Sapin. Cependant, j'ai fini par adopter une approche légèrement différente et j'ai créé mon propre décorateur:
from flask import Response
from functools import wraps
def returns_xml(f):
@wraps(f)
def decorated_function(*args, **kwargs):
r = f(*args, **kwargs)
return Response(r, content_type='text/xml; charset=utf-8')
return decorated_function
et utilisez-le ainsi:
@app.route('/ajax_ddl')
@returns_xml
def ajax_ddl():
xml = 'foo'
return xml
Je pense que c'est légèrement plus confortable.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.