Django - Diferença entre importar django.conf.settings e importar configurações

99

Qual é a diferença básica entre as seguintes instruções de importação em um aplicativo Django?

import settings

e

from django.conf import settings
Ozgur
fonte
1
+1 porque é uma questão muito interessante para quem é novo no desenvolvimento de Django.

Respostas:

134
import settings

Importará o módulo de configurações (.py) do seu projeto Django (se você estiver escrevendo este código do pacote "root" do seu aplicativo, é claro)

from django.conf import settings

Importará o objeto de configurações do pacote django.conf (arquivos fornecidos pelo Django). Isso é importante porque

[..] note que seu código não deve importar de global_settings ou de seu próprio arquivo de configurações. django.conf.settings abstrai os conceitos de configurações padrão e configurações específicas do site; apresenta uma interface única. Ele também separa o código que usa configurações do local de suas configurações.

ATUALIZAÇÃO: se você deseja definir algumas configurações próprias, consulte esta parte da documentação


fonte
4
FYI, global_settings é outro módulo dentro do pacote django.conf. Como diz a documentação, não o use.
3
Observe que o uso from django.conf import settingsé crítico se você deseja substituir as configurações durante o teste de unidade também.
Joris
4
Observe também que todos os nomes de configurações devem estar em maiúsculas . Ou seja, se o seu tem uma var my_varem suas configurações então este irá falhar: from django.conf import settings... settings.my_var. Mas se você der um nome MY_VAR, terá sucesso!
nik_m