Qual é a diferença entre `from django.conf import settings` e ʻimport settings` em um projeto Django

92

Estou lendo que a maioria das pessoas faz, from django.conf import settingsmas não entendo a diferença de simplesmente fazer import settingsem um arquivo de projeto django. Alguém pode explicar a diferença?

Tzenderman
fonte
As configurações do django.conf são configurações padrão do django ou configurações "globais" que você pode sobrescrever com suas próprias configurações baseadas no projeto.
Jingo de
7
NUNCA use o segundo formulário. O primeiro é o único correto.
bruno desthuilliers
2
Mas por que nunca usar o segundo?
tzenderman
1
possível duplicata do arquivo de configurações de importação
Anto,

Respostas:

111

import settingsirá importar o primeiro módulo python chamado settings.pyencontrado sys.path, geralmente (nas configurações padrão do django). Ele permite acesso apenas ao arquivo de configurações definidas pelo site, que sobrescreve as configurações padrão do django ( django.conf.global_settings).

Então, se você tentar acessar uma configuração válida do django não especificada no seu arquivo de configurações, você obterá um erro.

django.conf.settingsnão é um arquivo, mas uma classe que faz uma abstração dos conceitos, configurações padrão e configurações específicas do seu site. Django também faz outras verificações quando você usa from django.conf import settings.

Você também pode encontrá-lo nos documentos do django .

Espero que isto ajude.

Julio Cesar
fonte
5
import settingsimportará o primeiro módulo python chamado settings.pyencontrado em sys.path. Este pode não ser o "arquivo de configurações definidas pelo site", que é pesquisado na variável de ambiente "DJANGO_SETTINGS_MODULE" e pode ser apenas qualquer pacote ou módulo Python.
bruno desthuilliers
@brunodesthuilliers agradece. Eu atualizo minha resposta tomando conhecimento de sua correção.
juliocesar
22

from django.conf import settings é a melhor opção.

Eu uso arquivos de configurações diferentes para o mesmo projeto django (um para "live", um para "dev"), o primeiro selecionará o que está sendo executado.

Mansuetus
fonte