0Pricing
Flask Academy · Pelajaran

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 yet

Ikat 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 app

Mengapa 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 db

Modul 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

  1. Masalah dengan Objek app Global
  2. Tulis Fungsi create_app
  3. Inisialisasi Ekstensi dengan init_app
  4. Daftarkan Blueprint di Pabrik
← Kembali ke Flask Academy