Questo è un post più vecchio ma penso che se aggiungo questo utile librarysemplificherà le cose.
Usa django-configuration
Avvio rapido
pip install django-configurations
Quindi sottoclasse la classe configurations.Configuration inclusa nel file settings.py del tuo progetto o qualsiasi altro modulo che stai utilizzando per memorizzare le costanti delle impostazioni, ad esempio:
# mysite/settings.py
from configurations import Configuration
class Dev(Configuration):
DEBUG = True
Imposta la DJANGO_CONFIGURATIONvariabile d'ambiente sul nome della classe appena creata, ad esempio in ~/.bashrc:
export DJANGO_CONFIGURATION=Dev
e la DJANGO_SETTINGS_MODULEvariabile di ambiente nel percorso di importazione del modulo come al solito, ad esempio in bash:
export DJANGO_SETTINGS_MODULE=mysite.settings
In alternativa, fornire l' --configurationopzione quando si utilizzano i comandi di gestione di Django sulla falsariga --settingsdell'opzione della riga di comando predefinita di Django , ad esempio:
python manage.py runserver --settings=mysite.settings --configuration=Dev
Per consentire a Django di utilizzare la tua configurazione ora devi modificare il tuo script manage.py o wsgi.py per utilizzare le versioni di django-configurations delle funzioni di avvio appropriate, ad esempio un tipico manage.py che utilizza django-configurations sarebbe simile a questo:
#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
os.environ.setdefault('DJANGO_CONFIGURATION', 'Dev')
from configurations.management import execute_from_command_line
execute_from_command_line(sys.argv)
Notare che nella riga 10 non usiamo lo strumento comune django.core.management.execute_from_command_linema invece configurations.management.execute_from_command_line.
Lo stesso vale per il tuo file wsgi.py , ad esempio:
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mysite.settings')
os.environ.setdefault('DJANGO_CONFIGURATION', 'Dev')
from configurations.wsgi import get_wsgi_application
application = get_wsgi_application()
Qui non usiamo la django.core.wsgi.get_wsgi_applicationfunzione predefinita ma invece configurations.wsgi.get_wsgi_application.
Questo è tutto! Ora puoi utilizzare il tuo progetto con manage.py e il tuo server abilitato WSGI preferito.