2017-03-01 1 views
0

Dans Django j'ai mis à jour mon git avec pull de repo. Et quand je cours python3 manage.py collectstatic il jette "myproject" la base de données n'existe pas. Vraiment je n'ai pas de base de données myproject car en production j'ai seulement une base de données prod_project. Mais, en quelque sorte django tente de charger myproject base de données base.py plutôt que de charger de prod.pyParamètres du projet Django pour la production et le développement

# base.py 
    DATABASES = {                   
      'default': {                  
       'ENGINE': 'django.db.backends.postgresql_psycopg2',       
       'NAME': 'myproject',              
       'USER': 'admin',                
       'PASSWORD': '*****', 
       'ATOMIC_REQUESTS': True,                
      },                    
     } 

# prod.py 
    from .base import *                 

    DEBUG = False                   
    TEMPLATE_DEBUG = DEBUG                

    DATABASES = {                   
     'default': {                  
      'ENGINE': 'django.db.backends.postgresql_psycopg2',       
      'NAME': 'prod_myproject',              
      'USER': 'admin',                
      'PASSWORD': '',                
     },                    
    }                      

    try:                     
     from .local import *                
    except ImportError:                 
     pass 

# local.py is empty file 

mon projet est dans les applications/projet/dossier prod:

/.git 
etc/ 
apps/ 
static/ 
myproject/ 
    settings/ 
    base.py 
    prod.py. 
    beta.py 
    wsgy.py 
manage.py 
+0

Si vous ouvrez manage.py et observez le code à l'intérieur, vous pouvez lui indiquer les paramètres à utiliser. Vous pouvez manipuler cela pour utiliser le bon fichier par environnement. – Neelik

+0

Thx vient de répondre. Dans manage.py, il est écrit comme si __name__ == "__main__": os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "myproject.settings") –

Répondre

0

Quand je l'ai fait git pull, initialisation .py à l'intérieur des paramètres a également été modifiée. Je ne savais pas à ce sujet. Le développeur que je connais m'a conseillé de vérifier ce fichier. J'ai découvert que le fichier de configuration différent était défini par défaut. Je l'ai corrigé. Maintenant ça marche.

2

Si vous Séparez les 2 setting.py, vous devriez déclarer quel settings.py utiliser!

Vous pouvez le faire avec ci-dessous (mod_wsgi):

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'your_proj/settings_location/prod' 

cela crée django d'utiliser un fichier de paramètres spécifiques.

ou vous pouvez faire avec ce shell sur:

python manage.py collectstatic --settings=your_proj/settings_location/prod 

ce spécifier le fichier de paramètres dont vous avez besoin.

Ref: https://docs.djangoproject.com/en/1.10/topics/settings/#on-the-server-mod-wsgi

+0

Thx, mais j'utilise gunicorn –

+0

Ensuite, vous pouvez ajouter ces paramètres sur wsgi fichier .py à la place :) – Beomi

+1

et lorsque vous souhaitez utiliser ces paramètres, il suffit d'ajouter au fichier manage.py! – Beomi