2009-12-02 6 views
8

Ich habe gerade meine Django-Site auf meinem Staging-Server bewegt, und die Admin-Seite der Website hat kein Styling mit, als zuvor in der lokalen Entwicklung war es in Ordnung, ich las irgendwo, dass ich erstellen muss eine symbolische Verbindung, tat ich das, indem ich dies tatDjango Admin hat keinen Stil

sudo ln -s /var/www/sico/htdocs /usr/lib/python2.5/site-packages/django/contrib/admin/ 

aber das hat nichts getan gibt es noch etwas, das ich versuchen kann?

+0

Siehe auch http://stackoverflow.com/questions/1081596/django-serving-admin-media-files hilft. –

Antwort

10

Abhängig von Ihrem Web-Server-Setup, können Sie es eine von zwei Möglichkeiten:

symbolischen Link

In Ihrer Webseite Stammordnern, sollten Sie einen symbolischen Link zu Ihrem Django Admin-Medienverzeichnis erstellen, mit der Name als ADMIN_MEDIA_PREFIX in den Einstellungen Ihrer Django-App. Standardmäßig ist dies /media/, also erstellen Sie in Ihrem Webstammordner einen Symlink namens media bis /usr/lib/python2.5/site-packages/django/contrib/admin/media. (Beachten Sie die abschließende media am Ende des Symlink, die in Ihrem eigenen Beispiel fehlt - die Django Admin-Medien befindet sich in einem media Unterverzeichnis in contrib/admin).

Apache Alias ​​

Wenn Ihr Produktionsserver Apache ist, und Sie können die Root-Konfiguration ändern, können Sie mod_alias verwenden Sie den Pfad zu Django Admin-Medien einzurichten. /media/ in dieses Verzeichnis aufgelöst werden

<VirtualHost *:80> 
    Alias /media/ /usr/local/lib/python2.5/site-packages/django/contrib/admin/media/ 
</VirtualHost> 

Auf diese Weise werden alle Anforderungen unter dem Pfad: Wieder unter der Annahme, dass Ihr ADMIN_MEDIA_PREFIX ist /media/, können Sie einen Alias ​​wie so einrichten.

Eine ähnliche Technik existiert für die meisten anderen Server, wie Lighttpd oder nginx; Konsultieren Sie die Dokumentation Ihres Servers, wenn Sie Apache nicht verwenden.


Die Lösung mit Apache mod_alias ist wahrscheinlich für den Einsatz am besten ist, aber die symbolische Links Ansatz funktioniert auch genauso gut.

Der Grund dafür, dass Ihre App auf Ihrem Staging-Server funktioniert hat, liegt wahrscheinlich daran, dass sie mit dem internen Django-Webserver ausgeführt wurde, der den Pfad zum Administratormedienverzeichnis automatisch auflösen kann.

+0

hi, darf ich wissen, wo ist " Alias ​​/ media//usr/local/lib/python2.5/site-packages/django/contrib/admin/media/ " gehen ? geht es in die http.conf-Datei? – DjangoRocks

+0

Für die Neugierigen: Ja, der Eintrag virtualhost geht in die httpd.conf-Datei von Apache. – Coderer

+1

@mipadi Ich denke für Django 1.4 müssen Sie 'Alias ​​/ statisch/admin C: \ Python27 \ Lib \ Site-Pakete \ django \ contrib \ admin \ statisch \ admin' tun –

1

Ich glaube, Sie den Symlink falsch herum geschaffen haben - Ihr Befehl ein htdocs Symlink in ..../contrib/admin erstellt hat/

Was Sie brauchen, ist so etwas wie

sudo ln -s /usr/lib/python2.5/site-packages/django/contrib/admin/ /var/www/sico/htdocs/X 

Hier ist X, was immer Sie benötigen, um zu Ihrem ADMIN_MEDIA_PREFIX zu gelangen. Ich denke, die Standard-admin/media

Hoffnung wäre, dass