2009-04-09 7 views
0

Ich mache einige lokale Entwicklung mit Django und Satchmo. Wenn ich Produktbilder lokal über den Administrator hochlade, wird der Pfad zum Bild als absoluter Pfad angezeigt, komplett mit Laufwerksbuchstaben anstelle des richtigen relativen Pfads. nochWarum bekomme ich in Satchmo absolute URLs, wenn ich Produktbilder lokal hochlade?

Fremder, speichert Satchmo sowohl das Originalbild und die Thumbnails es in beide mir /media/ Verzeichnis und /media/images/ Verzeichnis erzeugt, wobei letztere, wo ich will ihnen zu gehen.

Die relavent Einstellungen sind wie folgt:

# 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/' 

Ich habe tripple die local_settings.py Datei überprüft und es gibt keine Erwähnung des Wortes ‚Medien‘ überall drin, also bin ich sicher, dass es keine sind Überschreibungen setzen.

Wenn es hilft, bin ich auf Windows, aber ich benutze die richtige Unix-Notation für meine Pfade.

Antwort

1

Das Problem ist ein Problem mit Schrägstrichrichtungen in der Datei settings.py.

Normalerweise erstelle ich eine relative_path() Funktion in meiner settings.py-Datei, so kann ich einfach einstellen:

MEDIA_ROOT = absolute_path('media') 

Die Version von Satchmo ich die Verwendung eines DIRNAME ermutigt wurde mit Einstellung statt:

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

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

Das Problem wurde, mit dieser Technik wurde mein MEDIA_ROOT als solche eingestellt wird 10

Aber das war die Verwendung der Windows Backslashes anstelle der Unix-Schrägstriche. Ich habe es gelöst mit:

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

Dies ist ein Windows-Fehler. Ich entwickle eine Satchmo-App unter Windows und das tut es, aber wenn ich es auf einer Linux-Box deploye, funktioniert es gut. Ich gehe einfach in die Datenbank und bearbeite die Pfade dort, wenn ich auf meiner Windows-Box teste.