Inisialisasi Ekstensi dengan init_app
Tunda pengikatan ekstensi hingga aplikasi dibuat.
Inisialisasi Ekstensi dengan init_app adalah pelajaran Flask Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Flask Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Flask Academy mencakup 4 pelajaran total.
Dilema Ekstensi
Dahulu, ekstensi seperti SQLAlchemy langsung mengambil aplikasi. Cara itu tidak berfungsi di dalam pabrik, karena app belum ada saat waktu impor. 🤔
Buat Tanpa Aplikasi
Perbaikannya terdiri dari dua langkah. Pertama, buat objek ekstensi pada tingkat modul tanpa meneruskan no app. Untuk sementara, objek tersebut tetap tidak terikat.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy() # no app yetIkat Nanti
Kedua, panggil init_app di dalam pabrik setelah aplikasi dibuat. Dengan begitu, ekstensi terikat pada instans tertentu tersebut.
def create_app():
app = Flask(__name__)
db.init_app(app)
return appMengapa Dua Langkah
Objek ekstensi dapat imported anywhere sebagai objek global, sementara pengikatan sebenarnya menunggu hingga pabrik memilih konfigurasi. Anda mendapatkan keunggulan dari kedua cara.
Dapat Diimpor di Mana Saja
Karena db berada pada tingkat modul, model dan tampilan Anda dapat mengimpornya dengan bebas tanpa menyentuh aplikasi, sehingga impor melingkar dapat dihindari.
from app.extensions import dbModul extensions yang Rapi
Pola yang umum adalah menyimpan semua ekstensi yang belum terikat dalam satu berkas extensions.py, lalu pabrik mengimpor dan menginisialisasi masing-masing ekstensi.
db = SQLAlchemy()
migrate = Migrate()
login = LoginManager()Inisialisasi Banyak Sekaligus
Di dalam create_app, Anda cukup memanggil init_app pada setiap ekstensi dan meneruskan aplikasi baru yang sama kepada semuanya.
db.init_app(app)
migrate.init_app(app, db)
login.init_app(app)Pengikatan per Aplikasi
Karena pengikatan berlangsung di dalam pabrik, dua aplikasi berbeda dapat memanggil init_app pada kelas ekstensi yang sama secara independen. Sangat berguna untuk pengujian.
Konfigurasi Dibaca saat Inisialisasi
Ekstensi membaca pengaturan seperti URI basis data selama init_app, jadi tetapkan nilai konfigurasi tersebut sebelum mengikatnya.
app.config["SQLALCHEMY_DATABASE_URI"] = uri
db.init_app(app)Gunakan di Dalam Konteks
Setelah init_app, ekstensi memerlukan app context untuk benar-benar menjalankan kueri, karena ekstensi harus mengetahui aplikasi yang sedang diajak berkomunikasi.
with app.app_context():
db.create_all()Aturan Utama
Buat ekstensi tanpa ikatan saat impor, lalu panggil init_app di dalam pabrik. Pemisahan tunggal ini membuka seluruh pola tersebut. 🔑
Pemeriksaan Singkat
Mengapa objek ekstensi dibuat tanpa aplikasi, lalu init_app dipanggil?
Rangkuman
Anda mempelajari langkah dua tahap: buat ekstensi tanpa ikatan, lalu panggil init_app di dalam pabrik. Global yang dapat diimpor ditambah pengikatan per aplikasi, tanpa impor melingkar. 🌟
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Inisialisasi Ekstensi dengan init_app” gratis?
Ya — teks lengkap “Inisialisasi Ekstensi dengan init_app” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Flask Academy, upgrade ke CoddyKit PRO. Kursus Flask Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Inisialisasi Ekstensi dengan init_app”?
Tunda pengikatan ekstensi hingga aplikasi dibuat. Kamu berlatih Flask Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Flask Academy?
Tidak diperlukan pengalaman sebelumnya. Flask Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Inisialisasi Ekstensi dengan init_app” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Flask Academy ini?
Ya. Setiap pelajaran Flask Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Masalah dengan Objek app Global
- Tulis Fungsi create_app
- Inisialisasi Ekstensi dengan init_app
- Daftarkan Blueprint di Pabrik