Django: diferencia entre importar django.conf.settings e importar configuraciones

99

¿Cuál es la diferencia básica entre las siguientes declaraciones de importación en una aplicación Django?

import settings

y

from django.conf import settings
ozgur
fuente
1
+1 porque es una pregunta muy interesante para quién es nuevo en el desarrollo de Django.

Respuestas:

134
import settings

Importará el módulo de configuración (.py) de su proyecto Django (si está escribiendo este código desde el paquete "raíz" de su aplicación, por supuesto)

from django.conf import settings

Importará el objeto de configuración del paquete django.conf (archivos proporcionados por Django). Esto es importante porque

[..] tenga en cuenta que su código no debe importar desde global_settings o su propio archivo de configuración. django.conf.settings abstrae los conceptos de configuración predeterminada y configuración específica del sitio; presenta una única interfaz. También desacopla el código que usa la configuración de la ubicación de su configuración.

ACTUALIZACIÓN: si desea definir algunas configuraciones propias, consulte esta parte de la documentación


fuente
4
FYI, global_settings es otro módulo dentro del paquete django.conf. Como dice la documentación, no lo use.
3
Tenga en cuenta que el uso from django.conf import settingses fundamental si desea poder sobrescribir la configuración también durante las pruebas unitarias.
Joris
4
También tenga en cuenta que todos los nombres de las configuraciones deben estar en mayúsculas . Es decir, si su tenga una var my_varen la configuración de entonces esto va a fallar: from django.conf import settings... settings.my_var. ¡Pero si lo nombras MY_VAR, tendrá éxito!
nik_m