Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Melaksanakan Kod Permulaan Sekali Sahaja Semasa Permulaan Pelayan Django?

Bagaimana untuk Melaksanakan Kod Permulaan Sekali Sahaja Semasa Permulaan Pelayan Django?

Patricia Arquette
Patricia Arquetteasal
2024-11-03 19:52:03781semak imbas

How to Execute Initialization Code Only Once During Django Server Startup?

Pelaksanaan Kod Permulaan dalam Django semasa Permulaan

Dalam Django, melaksanakan kod sekali sahaja semasa permulaan boleh menjadi keperluan biasa. Mari terokai penyelesaian yang memastikan kod dilaksanakan hanya semasa permulaan pelayan awal, bukan pada permintaan berikutnya.

Pada mulanya, penyelesaian yang dicadangkan dalam soalan yang dipautkan menimbulkan mesej "Hello world" dua kali dalam terminal. Masalahnya terletak pada penggunaan pengecualian MiddlewareNotUsed untuk menamatkan pelaksanaan middleware.

Bermula dengan Django 1.7, cangkuk khusus telah diperkenalkan untuk menangani isu ini. Dengan mengatasi kaedah sedia dalam kelas AppConfig apl anda, anda boleh menentukan kod permulaan sahaja. Pendekatan ini lebih bersih dan lebih jelas daripada menggunakan perisian tengah.

Untuk versi Django sebelum 1.7, meletakkan kod permulaan dalam fail __init__.py salah satu INSTALLED_APPS anda telah terbukti berkesan. Kod ini akan dilaksanakan apabila aplikasi mula-mula dimuatkan, memastikan ia berjalan sekali sahaja.

Berikut ialah contoh peletakan kod untuk pendekatan ini:

# myapp/__init__.py
import your_module

your_module.initializer()

Perhatikan bahawa apabila menggunakan perintah runserver ./manage.py, kod permulaan mungkin dilaksanakan dua kali disebabkan proses pengesahan pelayan dalaman. Walau bagaimanapun, dalam senario penggunaan biasa atau semasa muat semula automatik oleh runserver, kod akan dilaksanakan sekali sahaja.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Kod Permulaan Sekali Sahaja Semasa Permulaan Pelayan Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn