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?


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

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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.