Cetak biru adalah templat untuk membuat "bagian" aplikasi web. Anda bisa menganggapnya sebagai cetakan:
Anda dapat mengambil cetak biru dan menerapkannya ke aplikasi Anda di beberapa tempat. Setiap kali Anda menerapkannya cetak biru akan membuat versi baru dari strukturnya di plester aplikasi Anda.
# An example
from flask import Blueprint
tree_mold = Blueprint("mold", __name__)
@tree_mold.route("/leaves")
def leaves():
return "This tree has leaves"
@tree_mold.route("/roots")
def roots():
return "And roots as well"
@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
return "Looking at the rings for {year}".format(year=year)
Ini adalah cetakan sederhana untuk bekerja dengan pohon - dikatakan bahwa aplikasi apa pun yang berhubungan dengan pohon harus menyediakan akses ke daunnya, akarnya, dan cincinnya (berdasarkan tahun). Dengan sendirinya, ini adalah cangkang kosong - tidak dapat dirutekan, tidak dapat merespons, hingga terkesan pada aplikasi:
from tree_workshop import tree_mold
app.register_blueprint(tree_mold, url_prefix="/oak")
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")
Setelah dibuat, itu mungkin "terkesan" pada aplikasi dengan menggunakan register_blueprint
fungsi - ini "mengesankan" cetakan cetak biru pada aplikasi di lokasi yang ditentukan oleh url_prefix
.
oak/leaves
danfir\leaves
akan menunjukkan kode yang sama? Juga, apa tujuan dari stringmold
diBlueprint("mold", __name__)
oak/leaves
danfir/leaves
akan ditangani olehdef leaves
."mold"
adalah nama cetak biru dan digunakan untuk disambiguasi ketika merujuk ke rute (misalnyasomeBlueprint.routeName
vs.anotherBlueprint.routeName
).url_prefix
fungsi? Katakan, untuk mengecek apakah pohon ek atau cemara?tree_mold.url_prefix
memberi sayaNone
url_for('.relative_route_name')
(perhatikan titik terkemuka). Misalnya,url_for('.roots')
akan menyediakan URL dengan cakupan yang benar di setiap titik yang dipasang secara otomatis.Sebagaimana ditunjukkan dalam komentar oleh @Devasish , artikel ini memberikan jawaban yang bagus:
http://exploreflask.com/en/latest/blueprints.html
Mengutip dari artikel:
Ini adalah interpretasi yang sangat baik, terutama bagian "jika Facebook menggunakan Flask". Ini memberi kita situasi konkret untuk memvisualisasikan cara kerja Cetak Biru sebenarnya.
sumber
Saya sendiri baru saja menemukan ini dan bingung setelah membaca beberapa sumber dokumentasi. Pada awalnya saya pikir itu seperti gaya implementasi C # / Java di mana Anda mendefinisikan beberapa hal tetapi tidak perlu khawatir tentang hal itu mendefinisikannya nanti. Namun, saya menemukan halaman ini yang menempatkannya dalam istilah yang sangat sangat awam (dan kejadian hari ini sangat lucu).https://hackersandslackers.com/flask-blueprints/
Pada dasarnya satu manfaat yang disebutkan dalam tautan dan memberi saya gagasan yang jelas tentang penggunaannya di dunia nyata adalah bahwa saya dapat secara efektif mengatur / membagi secara logis aplikasi menjadi beberapa bagian yang hanya perlu mementingkan urusannya sendiri. Jadi itu menyediakan beberapa enkapsulasi yang dirancang.
Sunting: Saya sedang menggunakannya untuk membagi kode webapps saya. Itu adalah keputusan yang baik juga karena saya menemukan desainer utama ingin membuat tampilan depan di Vue.js. Yang saya belum pernah menggunakan tetapi melihat file proyek itu akan terlihat jauh lebih berantakan dan mungkin memberikan banyak penamaan tabrakan rawan.
sumber
Untuk proyek yang lebih besar, semua kode Anda tidak boleh berada dalam file yang sama. Alih-alih, Anda dapat mengelompokkan atau membagi kode yang lebih besar menjadi file terpisah, sebagian besar berdasarkan fungsionalitas. Seperti batu bata yang membentuk dinding.
Semoga ini bisa membantu. Karena ini adalah pertanyaan teoretis, tidak memposting kode.
sumber