Saya menggunakan Flask dan saya mengembalikan file XML dari permintaan dapatkan. Bagaimana cara mengatur tipe konten ke xml?
misalnya
@app.route('/ajax_ddl')
def ajax_ddl():
xml = 'foo'
header("Content-type: text/xml")
return xml
Coba seperti ini:
from flask import Response
@app.route('/ajax_ddl')
def ajax_ddl():
xml = 'foo'
return Response(xml, mimetype='text/xml')
Content-Type yang sebenarnya didasarkan pada parameter mimetype dan charset (default ke UTF-8).
Objek tanggapan (dan permintaan) didokumentasikan di sini: http://werkzeug.pocoo.org/docs/wrappers/
flask.Response
, menimpadefault_mimetype
atribut kelas, dan menetapkan bahwa sebagaiapp.response_class
werkzeug.pocoo.org/docs/wrappers/... flask.pocoo.org/docs/api/#flask.Flask.response_classapp.response_class
seperti yang ditunjukkan Simon, jangan lupa gunakanapp.make_response
untuk mendapatkan contoh tanggapan Anda seperti ditunjukkan dalam jawaban di bawah ini .Sesederhana ini
Semoga ini bisa membantu
Pembaruan: Gunakan metode ini karena ini akan bekerja dengan kedua python 2.x dan python 3.x
dan kedua itu juga menghilangkan beberapa masalah header.
sumber
Saya suka dan membenarkan jawaban @Simon Sapin. Saya akhirnya mengambil cara yang sedikit berbeda, dan menciptakan dekorator saya sendiri:
dan gunakan sebagai berikut:
Saya pikir ini sedikit lebih nyaman.
sumber
return 'msg', 200
, ini akan mengarah keValueError: Expected bytes
. Alih-alih, ganti dekorator kereturn Response(*r, content_type='whatever')
. Ini akan membongkar tuple ke argumen. Terima kasih, untuk solusi elegan!Gunakan metode make_response untuk mendapatkan respons dengan data Anda. Kemudian atur atribut mimetype . Akhirnya kembalikan respons ini:
Jika Anda menggunakan
Response
secara langsung, Anda kehilangan kesempatan untuk menyesuaikan respons dengan mengaturapp.response_class
. Themake_response
metode menggunakanapp.responses_class
untuk membuat objek respon. Dalam hal ini Anda dapat membuat kelas Anda sendiri, tambahkan membuat aplikasi Anda menggunakannya secara global:sumber
make_response
lebih baik daripada menggunakanResponse
sumber
Biasanya Anda tidak harus membuat
Response
objek sendiri karenamake_response()
akan mengurusnya untuk Anda.Satu hal lagi, sepertinya tidak ada yang menyebutkan
after_this_request
, saya ingin mengatakan sesuatu:after_this_request
jadi kita bisa melakukannya dengan
after_this_request
, kode akan terlihat seperti ini:sumber
Anda dapat mencoba metode berikut (python3.6.2) :
satu kasus :
kasus kedua :
Saya menggunakan Flask. Dan jika Anda ingin mengembalikan json, Anda dapat menulis ini:
sumber