2013-07-21 2 views
3

J'ai plusieurs paramètres django personnalisés, c'est fondamentalement ma structure de projet:django-admin.py ne peut pas trouver le fichier des paramètres personnalisés

MainProject/ 
    manage.py 
    my_project/ 
    settings/ 
     base.py 
     dev.py 
     prod.py 

J'ai créé les __init__.py fichiers dans les répertoires pour les identifier comme paquets.
J'ai exporté le DJANGO_SETTINGS_MODULE pour pointer vers le fichier de paramètres choisi.
La commande manage.py semble très bien gérer, je n'ai jamais eu de problème avec ça.

Le problème est que peu importe ce que je fais le django-admin.py est pas en mesure de trouver les paramètres fichier. J'ai essayé plusieurs solutions possibles mais rien ne semble fonctionner jusqu'ici.

  1. Je l'ai utilisé le --settings=my_project.settings.dev
  2. J'ai modifié et codé en dur le manage.py de laisser pointer vers le fichier dev.py
  3. J'ai créé un fichier settings à l'intérieur du MainProject et my_project répertoires qui importent le fichier dev (qui à son tour importe le fichier base.py).
  4. J'ai créé un fichier settings qui laisse Django savoir quels fichiers doit-il utiliser comme settings

Ceci est le point 4 en ce qui concerne:

from django.core.management import setup_environ 
try: 
    import my_project.settings.dev as settings 
except ImportError: 
    import sys 
    sys.stderr.write("Couldn't find the settings.py module.") 
    sys.exit(1) 
setup_environ(settings) 

Rien ne semble fonctionner jusqu'à présent.

====================================

SOLUTION:
Je n'ai pas trouvé la solution exacte mais grâce à un commentaire sur la réponse choisie j'ai compris que vous pouvez utiliser manage.py pour tout ce que vous pourriez faire en django-admin.py, je ne le savais pas! Depuis que les choses fonctionnent pour moi en utilisant manage.py je vais bien avec.

Répondre

1

Ce que je recommande de faire:

Créer un fichier settings.py normal et importer une des autres là-dedans. Cela évite la duplication des paramètres partagés entre les trois scénarios + c'est en fait la manière recommandée de le faire selon le principe DRY.

En règle générale, vous devez uniquement définir le paramètre de débogage, les paramètres de base de données et les clés privées dans les fichiers de paramètres spécifiques. Tous les autres paramètres doivent être partagés entre tous les scénarios afin d'éviter d'en mettre un à jour et d'obtenir des erreurs de débogage difficiles.

+0

fait. Cela fonctionne pour manage.py, ce n'est pas pour django-admin.py – Leonardo

+2

Vous n'êtes pas censé utiliser django-admin.py, vous devriez utiliser manage.py. Il prend en charge la configuration de l'environnement et peut exécuter toutes les commandes de django-admin. [Voir le Doc Django] (https://docs.djangoproject.com/fr/dev/ref/django-admin/) – timovdw

+0

Je ne le savais pas! Cela fonctionne pour moi avec manage.py alors j'ai résolu le problème, merci! – Leonardo

0

Avez-vous essayé d'importer les paramètres de développement à l'intérieur du __init__.py à partir de votre module de paramètres?

paramètres/_ init _.py

from .dev import *

Questions connexes