2011-01-02 12 views
1

Ich stelle fest, dass wenn ich meine Java-Skripte und statische Bilddateien von meinen Vorlagen referenzieren, erscheinen sie in der Entwicklung, aber nicht vom Produktionsserver. Von der Entwicklung, ich auf sie als solche:Serving statische Medien in Django-Anwendung

<img src="/my_proj/media/css/images/collapsed.png" /> 

aber aus der Produktion, muss ich das Projektverzeichnis entfernen:

<img src="/media/css/images/collapsed.png" /> 

Ich gehe davon aus ich etwas falsch in Bezug mache statisch zu dienen Medien.

Ich bin gefangen zwischen einer Reihe von scheinbar verschiedenen Optionen für die Bereitstellung von statischen Medien in Django. Auf der einen Seite wurde empfohlen, dass ich django-staticfiles verwenden, um Medien zu dienen. Zum anderen sehe ich in der Dokumentation einen Verweis auf STATIC_ROOT and STATIC_URL (mit Einschränkungen zur Verwendung in der Produktion).

Ich habe kleine .png-Dateien von "Plus" und "Minus" -Symbolen für die Verwendung in einigen meiner jQuery-Skripte. Zusätzlich müssen die Skripte selbst referenziert werden.

1) Ordne ich Skripte und Site-Images korrekt als statische Medien ein?
2) Was ist die beste Methode, um auf diese Medien zuzugreifen (aus der Produktion)?

Antwort

3

Sie sollten die URLs nicht auf diese Weise fest codieren. Wenn Sie die DEV-Version von Django verwenden, sollten Sie check this doc.

Wenn dies nicht der Fall ist, können Sie zur Vereinfachung {{MEDIA_URL}} verwenden und diese Variable in Ihren Einstellungen für die Entwicklung und für die Produktion konfigurieren.

<img src="{{ MEDIA_URL }}/media/css..." /> 

Denken Sie daran, dass Sie Request verwenden müssen, see more here on docs here und here.

Auch sollten Sie alle Ihre statischen Dateien direkt über einen richtigen Webserver Server. Sie können dafür Apache oder Nginx konfigurieren.

1

Seufzer. Es gibt nur eine Möglichkeit, statische Medien in der Produktion bereitzustellen, nämlich den Webserver - zB Apache - dazu zu bringen. Django-staticfiles ist nur für die Entwicklung gedacht, und dies wird in der gesamten Dokumentation klar angegeben.

Verwandte Themen