Il modo in cui affronta questo problema, e devo affrontarlo in quasi tutti i progetti su cui lavoro, è quello di utilizzare un modello scelto da qualcuno. In questo modello, che non può essere utilizzato solo per mantenere le credenziali non sotto controllo di versione ma anche per separare le impostazioni specifiche dell'ambiente/piattaforma, il file delle impostazioni principali, che è sotto controllo di versione, importa un file di impostazioni secondario che è opportunamente chiamato "local_settings". Questo file "local_settings" non viene messo sotto controllo di versione e, per ogni piattaforma su cui viene distribuita l'origine, viene creato un file specifico local_settings separato, adattato solo a quella piattaforma.
Ti darò un esempio di come faccio comunemente questo per i miei progetti Django/Python. C'è un file centrale, per progetto settings.py
, che è sotto controllo di versione, e una piattaforma (forse la piattaforma non è proprio la terminologia giusta da usare qui) specifico local_settings.py
. Il file local_settings.py
è importata da all'interno del file settings.py
, dove diverse variabili di impostazione vengono definiti nel seguente modo:
import local_settings
DATABASE_USER = local_settings.db_user
DATABASE_PASSWORD = local_settings.db_pass
E, come esempio di andare avanti con frammento di sopra, il file local_settings.py
viene definito così:
db_user = 'user'
db_pass = 'pass'
Ho trovato questo modello quando si tratta del problema in questione per funzionare davvero bene.
Questa mi sembra una tecnica molto carina, inizierò ad usarlo. Ti dispiace fornire un esempio del codice sorgente 'local_settings.py'? –
nella parte inferiore del tuo Django settings.py nel controllo del codice sorgente fai questo: prova: da settings_local import * tranne ImportError: pass –
Hey Spike. Sono dell'opinione che nel caso in cui il file 'local_settings.py' sia mancante, di solito è una buona idea lasciare che l'eccezione causata dall'importazione di un file/modulo mancante si riempia in modo che la persona che sta configurando il progetto sappia esattamente che cosa sta succedendo. – ayaz