Atualização Basta ler Two Scoops of Django
Depois de criar seu projeto, crie um settings
diretório em seu projeto e copie settings.py
para settings/defaults.py
– você não precisa usar o nome defaults.py
(algumas pessoas preferem common.py
), mas para este exemplo é o que usarei.
Em seguida, crie settings/__init__.py
um arquivo para cada ambiente. Seu projeto deve ser mais parecido com este:
top-folder-named-whatever-you-like
- manage.py
- requirements.txt
- myproject/
- __init__.py
- urls.py
- wsgi.py
- myapp/
- __init__.py
- models.py
- tests.py
- views.py
- static/
- templates/
- templatetags/
- settings/
- __init__.py
- defaults.py
- production.py # from defaults import *
- staging.py # ditto
- development.example.py # ditto
- development.py # not in git
Obviamente, nem todos definem seus projetos da mesma maneira, então pode haver algumas diferenças. Tudo bem, desde que a pasta de configurações tenha um arquivo para cada ambiente.
Diga ao git para ignorar (ou se você chamar assim). Mas crie um arquivo de exemplo para ajudar outros desenvolvedores a se preparar rapidamente.development.py
local.py
Na parte superior de cada um dos arquivos de configurações de ambiente, adicione uma importação para obter as configurações padrão.
Agora é a parte complicada, pois há muitas maneiras de definir a DJANGO_SETTINGS_MODEL
variável de ambiente.
Remotamente, é mais simples. Você pode colocá-lo em seu vhost se estiver no Apache, e tenho certeza de que há uma maneira semelhante com o nginx. Existem outras maneiras de declará-lo no mesmo comando que executa seu wsgi. Seja como for, se estiver, digamos, em produção, você vai querer que seja definido como .myproject.settings.production
Localmente, você deseja definir como . Você costumava ser capaz de inserir seu .bashrc. Mas como o Django mudou o layout padrão, agora você deve incluir o nome do projeto no caminho das configurações.myproject.settings.development
DJANGO_SETTINGS_MODULE=settings.development
A solução óbvia, mas mais provável de falhar, é lembrar de defini-la na linha de comando em cada sessão de terminal em que estiver trabalhando em seu projeto.
Uma maneira hacky é copiar para (ignorado pelo git) e editá-lo para usar em vez de apenas . Então lembre-se de usar em vez demanage.py
manage_local.py
myproject.settings.development
myproject.settings
manage_local.py
manage.py
Uma maneira profissional, porém detalhada, é usar o Foreman, um Procfile e um arquivo .env que contém as variáveis de ambiente. Se você tiver mais variáveis de ambiente para definir ou se estiver implantando no heroku, também pode fazer desta forma.
Aqui está um bom artigo sobre como usar o Foreman localmente: http://avalonstar.com/journal/2012/jan/01/on-foreman-and-procfiles/
Atualização Estou trabalhando em um fabfile usando a versão de desenvolvimento do Fabric que permitirá que você execute comandos como fab web
e fab shell
e fab manage:somecommand
com DJANGO_SETTINGS_MODULE
conforme definido em um .env
arquivo que também pode ser usado com o Foreman.