2013-02-27 1 views
0

J'ai mon base_settings.py mis à DEBUG = False, à la fin de mes paramètres que j'ai le code suivant:S3 Utiliser seulement dans la production Django

if not DEBUG: 
    AWS_STORAGE_BUCKET_NAME = 'bucket_name' 
    STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
    S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME 
    STATIC_URL = S3_URL 

Dans mon local_settings.py j'ai mis DEBUG = True.

Mon initialisation fichier .py pour le module de paramètres:

from .base import * 

try: 
    from .local import * 
except ImportError: 
    pass 

Pour une raison quelconque, lorsque l'on travaille localement, il essaie toujours de tirer des fichiers statiques sur S3 malgré mon sinon paramètre DEBUG. La raison à laquelle je pense est qu'il lit d'abord le fichier de base et teste DEBUG avant que le fichier local_settings.py ne soit importé. Donc, ma question est: Comment puis-je contourner ce problème afin que les fichiers s3 ne sont utilisés que sur la production?

Répondre

1

En supposant que vous ayez un package .local localement, essayez de supprimer le fichier try/except autour de l'importation .local et de voir si des erreurs sont générées. De même, si vous définissez DEBUG dans la base comme VRAI et que vous définissez vos URL et vos stockages, puis que vous définissez DEBUG sur false dans .locals, vous devez réinitialiser vos URL et vos stockages dans .locals.

.locals sont importées après votre fichier de base a déjà été importé, de sorte que votre ligne:

if not DEBUG: 

... à TRUE pendant sévalue importation, met tout pour utiliser S3.

Questions connexes