Apakah ada solusi cerdas untuk menyimpan file statis di direktori root aplikasi Flask. robots.txt dan sitemap.xml diharapkan ada di /, jadi ide saya adalah membuat rute untuk mereka:
@app.route('/sitemap.xml', methods=['GET'])
def sitemap():
response = make_response(open('sitemap.xml').read())
response.headers["Content-type"] = "text/plain"
return response
Pasti ada sesuatu yang lebih nyaman :)
@vonPetrushev benar, dalam produksi Anda ingin menyajikan file statis melalui nginx atau apache, tetapi untuk pengembangan, senang memiliki lingkungan dev Anda yang sederhana karena aplikasi python Anda juga menyajikan konten statis sehingga Anda tidak perlu khawatir tentang mengubah konfigurasi dan beberapa proyek. Untuk melakukan itu, Anda harus menggunakan SharedDataMiddleware .
Contoh ini mengasumsikan file statis Anda berada di folder "statis", sesuaikan dengan apa pun yang sesuai dengan lingkungan Anda.
sumber
Jawaban terbersih untuk pertanyaan ini adalah jawaban untuk ini (identik) pertanyaan :
Untuk meringkas:
sumber
Meskipun ini adalah pertanyaan terjawab lama, saya menjawab ini karena posting ini muncul cukup tinggi di hasil Google. Meskipun tidak tercakup dalam dokumentasi, jika Anda membaca dokumen API untuk konstruktor objek Aplikasi Flask, hal itu akan tercakup. Dengan melewatkan parameter bernama
static_folder
seperti ini:... Anda dapat menentukan dari mana file statis disajikan. Demikian pula, Anda dapat menentukan a
template_folder
, nama Andastatic_url_path
.sumber
/static
tapi Anda bisa mengubahnya dengan menimpastatic_url_path
.Melayani file statis tidak ada hubungannya dengan aplikasi yang dimaksudkan untuk mengirimkan konten dinamis. Cara yang benar untuk menyajikan file statis bergantung pada server yang Anda gunakan. Lagi pula, saat Anda mengaktifkan dan menjalankan aplikasi, Anda harus mengikatnya ke server web. Saya hanya dapat berbicara untuk httpd apache, jadi cara melayani file statis ditentukan dalam host virtual yang Anda ikat ke aplikasi Anda melalui mod-wsgi. Berikut adalah panduan yang akan menunjukkan kepada Anda cara menyajikan peta situs, robots.txt atau konten statis lainnya: http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide#Mounting_At_Root_Of_Site
sumber
Cara lain untuk mengirim file statis adalah dengan menggunakan aturan penampung-semua seperti ini:
Saya menggunakan ini untuk mencoba meminimalkan pengaturan saat mengembangkan. Saya mendapat ide dari http://flask.pocoo.org/snippets/57/
Selanjutnya, saya mengembangkan menggunakan flask di mesin mandiri saya tetapi menerapkan dengan Apache di server produksi. Saya menggunakan:
sumber
Ini mungkin telah ditambahkan sejak pertanyaan ini ditanyakan, tetapi saya sedang melihat-lihat "helpers.py" flask dan saya menemukan flask.send_from_directory:
... yang mereferensikan flask.send_file:
... yang tampaknya lebih baik untuk kontrol lebih, meskipun send_from_directory meneruskan ** opsi langsung ke send_file.
sumber
Dari dokumentasi di sini: http://flask.pocoo.org/docs/quickstart/#static-files
sumber
Saya juga mengalami dilema yang sama. Melakukan pencarian dan menemukan jawaban saya (MHO):
Sekalian mengutip dari dokumentasi
IMHO: Saat aplikasi Anda siap untuk diproduksi , penayangan file statis harus (atau idealnya) dikonfigurasi di server web (nginx, apache); tetapi selama pengembangan , Flask membuatnya tersedia untuk menyajikan file statis. Ini untuk membantu Anda berkembang pesat - tidak perlu mengatur server web dan semacamnya.
Semoga membantu.
sumber
Coba ini:
sumber