Django - Perbedaan antara impor django.conf.settings dan pengaturan impor

99

Apa perbedaan mendasar antara pernyataan import berikut dalam aplikasi Django?

import settings

dan

from django.conf import settings
Ozgur
sumber
1
+1 karena ini adalah pertanyaan yang sangat menarik untuk siapa yang baru dalam pengembangan Django.

Jawaban:

134
import settings

Akan mengimpor modul pengaturan (.py) dari proyek Django Anda (jika Anda menulis kode ini dari paket "root" aplikasi Anda, tentunya)

from django.conf import settings

Akan mengimpor objek pengaturan dari paket django.conf (berkas yang disediakan Django). Ini penting , karena

[..] perhatikan bahwa kode Anda tidak boleh diimpor dari global_settings atau file pengaturan Anda sendiri. django.conf.settings mengabstraksi konsep pengaturan default dan pengaturan khusus situs; itu menyajikan satu antarmuka. Ini juga memisahkan kode yang menggunakan pengaturan dari lokasi pengaturan Anda.

UPDATE: jika Anda ingin menentukan beberapa pengaturan sendiri, lihat bagian dokumentasi ini


sumber
4
FYI, global_settings adalah modul lain di dalam paket django.conf. Seperti yang dikatakan dalam dokumentasi, jangan gunakan itu.
3
Perhatikan bahwa penggunaan from django.conf import settingssangat penting jika Anda juga ingin dapat menimpa pengaturan selama pengujian unit.
Joris
4
Perhatikan juga bahwa semua nama pengaturan harus menggunakan huruf besar . Artinya, jika Anda memiliki var my_vardalam pengaturan Anda maka ini akan gagal: from django.conf import settings... settings.my_var. Tetapi jika Anda sebutkan MY_VARitu akan berhasil!
nik_m