Aplikasi labu saya saat ini terdiri dari satu test.py
file dengan banyak rute dan main()
rute yang ditentukan. Apakah ada cara saya bisa membuat test2.py
file yang berisi rute yang tidak ditangani test.py
?
@app.route('/somepath')
def somehandler():
# Handler code here
Saya khawatir ada terlalu banyak rute di test.py
dan ingin membuatnya sehingga saya dapat menjalankan python test.py
, yang juga akan mengambil rute test.py
seolah-olah itu adalah bagian dari file yang sama. Perubahan apa yang harus saya lakukan test.py
dan / atau sertakan untuk membuatnya test2.py
berfungsi?
Anda dapat menggunakan trik sederhana yang mengimpor variabel aplikasi labu dari utama di dalam file lain, seperti:
test-routes.py
dan di file utama Anda, tempat Anda mendeklarasikan aplikasi labu, impor rute uji, seperti:
app.py
Ini bekerja dari sisi saya.
sumber
__main__
mengacu ke file entri Anda, itu saja!import test-routes
tidak bisa di bagian atasapp.py
file. Itu crash gunicorn tapi kemudian setelah memindahkan impor ke bagian bawah file kemudian berhasil. "hanya memastikan modul diimpor dan kami melakukan itu di bagian bawah file"Saya ingin merekomendasikan labu-kosong di GitHub.
Ini memberikan cara mudah untuk memahami Cetak Biru , banyak tampilan, dan ekstensi .
sumber
Membagi aplikasi menjadi cetak biru adalah ide bagus. Namun, jika ini tidak cukup, dan jika Anda ingin membagi Blueprint itu sendiri menjadi beberapa file py, ini juga dimungkinkan menggunakan sistem impor modul Python biasa, dan kemudian mengulang semua rute yang diimpor dari file lain .
Saya membuat intisari dengan kode untuk melakukan ini:
https://gist.github.com/Jaza/61f879f577bc9d06029e
Sejauh yang saya ketahui, ini adalah satu-satunya cara yang layak untuk membagi Cetak Biru saat ini. Tidak mungkin membuat "sub-cetak biru" di Flask, meskipun ada masalah terbuka dengan banyak diskusi tentang ini:
https://github.com/mitsuhiko/flask/issues/593
Juga, bahkan jika itu mungkin (dan mungkin bisa dilakukan dengan menggunakan beberapa snippet dari utas masalah itu), sub-cetak biru mungkin terlalu membatasi untuk kasus penggunaan Anda - misalnya jika Anda tidak ingin semua rute dalam suatu sub-modul memiliki sub-awalan URL yang sama.
sumber
Tugas ini dapat diselesaikan tanpa cetak biru dan impor rumit menggunakan Peta URL Terpusat
app.py
views.py
sumber