Django - Differenza tra import django.conf.settings e impostazioni di importazione


99

Qual è la differenza fondamentale tra le seguenti istruzioni di importazione in un'app Django?

import settings

e

from django.conf import settings

1
+1 perché è una domanda molto interessante per chi è nuovo nello sviluppo di Django.

Risposte:


134
import settings

Importerà il modulo delle impostazioni (.py) del tuo progetto Django (se stai scrivendo questo codice dal pacchetto "root" della tua applicazione, ovviamente)

from django.conf import settings

Importerà l' oggetto delle impostazioni dal pacchetto django.conf (i file forniti da Django). Questo è importante , perché

[..] nota che il tuo codice non dovrebbe importare né da global_settings né dal tuo file di impostazioni. django.conf.settings astrae i concetti di impostazioni predefinite e impostazioni specifiche del sito; presenta un'unica interfaccia. Inoltre, separa il codice che utilizza le impostazioni dalla posizione delle impostazioni.

AGGIORNAMENTO: se si desidera definire delle proprie impostazioni, vedere questa parte della documentazione


4
Cordiali saluti, global_settings è un altro modulo all'interno del pacchetto django.conf. Come dice la documentazione, non usarlo.

3
Si noti che l'utilizzo from django.conf import settingsè fondamentale se si desidera essere in grado di sovrascrivere le impostazioni anche durante i test unitari.
Joris

4
Tieni inoltre presente che tutti i nomi delle impostazioni devono essere maiuscoli . Cioè, se tu abbia una var my_varnelle impostazioni allora questo fallirà: from django.conf import settings... settings.my_var. Ma se lo chiami MY_VAR, avrà successo!
nik_m
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.