2009-04-09 14 views
0

Je fais du développement local en utilisant Django et Satchmo. Lorsque je télécharge des images de produits localement via l'admin, le chemin d'accès à l'image apparaît sous la forme d'un chemin absolu, complet avec la lettre de lecteur, plutôt que le chemin relatif correct.Pourquoi est-ce que je reçois des URL absolues dans Satchmo lorsque je télécharge des images de produits localement?

étrange encore, Satchmo permet d'économiser l'image originale et les vignettes qu'elle génère en moi tant le répertoire et le répertoire /media//media/images/, ce dernier étant là où je veux qu'ils aillent.

Les paramètres relavent sont les suivantes:

# path relative to the settings.py file 
DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8')) 

MEDIA_ROOT = os.path.join(DIRNAME, 'media') 
MEDIA_URL = 'http://localhost:8000/' 
ADMIN_MEDIA_PREFIX = '/media/' 

Je tripple vérifié le fichier local_settings.py et il n'y a aucune mention du mot « médias » partout en elle, donc je suis sûr qu'il n'y a pas réglage des remplacements. Si cela aide, je suis sur Windows, mais j'utilise toute la notation Unix appropriée pour mes chemins.

Répondre

1

Il s'avère que le problème est lié aux instructions de barre oblique dans le fichier settings.py.

Habituellement, je crée une fonction relative_path() dans mon dossier settings.py donc je peux facilement définir:

MEDIA_ROOT = absolute_path('media') 

La version de Satchmo j'utilisais encouragé l'utilisation d'un DIRNAME à la place mise:

DIRNAME = os.path.abspath(os.path.dirname(__file__).decode('utf-8') 

La question a été, en utilisant cette technique, mon MEDIA_ROOT était en cours défini comme tel:

MEDIA_ROOT = os.path.join(DIRNAME, 'media') 

Mais cela utilisait les barres obliques inverses de Windows à la place des barres obliques d'Unix. Je l'ai résoudre avec:

MEDIA_ROOT = os.path.join(DIRNAME, 'media').replace('\\', '/') 
1

Ceci est un bug de Windows seulement. Je développe une application Satchmo sur Windows et cela fonctionne, mais quand je la déploie sur une machine Linux, ça marche très bien. Je vais juste dans la base de données et éditer les chemins là quand je fais des tests sur ma boîte Windows.