Hallo,
ich habe in meinem Heimnetzwerk auf einem Server Django installiert. Verwendet wird Apache2 mit mod_python und eine MySql-Datenbank. Ich kann die Admin-Seite aufrufen (mehr Seiten habe ich noch nicht ). Nur leider ist die Oberfläche ohne Formatierungen:
Was muss ich einstellen, dass die normal formatierte Oberfläche erscheint?
Grüße
Mawilo
[Django] Unformatierte Admin-Oberfläche
Die statischen Dateien der Admin-Anwendung exportieren, so wie es in der Dokumentation von Django beschrieben ist.
- Mawilo
- User
- Beiträge: 452
- Registriert: Sonntag 22. Februar 2004, 10:58
- Wohnort: Sachsen
- Kontaktdaten:
Ich bekomme es nicht hin. Ich habe bestimmt irgendwo einen dusseligen Fehler gemacht und sehe ihn nicht.
Hier mal der Ausschnitt aus der httpd.conf:
Und hier ein paar Zeilen der settings.py:
Das Projekt habe ich "medien" genannt und liegt im Verzeichnis /local/mediasite/.
Den gesamten Inhalt des Verzeichnisses: /usr/lib/python2.6/site-packages/django/contrib/admin/media habe ich in das Verzeichnis /local/mediasite/medien/media/admin_media kopiert. Um Probleme mit der Rechtevergabe zu umgehen, habe ich den Ordner rekursiv auf 777 gesetzt.
Der Rechner, auf dem das ganze läuft, hat in meinem Netzwerk die IP 192.168.0.190. Für die Konfiguration greife ich über ssh auf den Rechner zu.
Habt ihr noch einen Tipp für mich?
Grüße
Mawilo
Hier mal der Ausschnitt aus der httpd.conf:
Code: Alles auswählen
<Location "/">
SetHandler python-program
Options -Indexes +FollowSymLinks
PythonPath "['/local/mediasite/'] + sys.path"
PythonHandler django.core.handlers.modpython
PythonOption django.root /medien
SetEnv DJANGO_SETTINGS_MODULE medien.settings
PythonDebug On
</Location>
Code: Alles auswählen
MEDIA_ROOT = '/local/mediasite/medien/media/'
MEDIA_URL = 'http://192.168.0.190/media/'
ADMIN_MEDIA_PREFIX = 'http://192.168.0.190/media/admin_media/'
Den gesamten Inhalt des Verzeichnisses: /usr/lib/python2.6/site-packages/django/contrib/admin/media habe ich in das Verzeichnis /local/mediasite/medien/media/admin_media kopiert. Um Probleme mit der Rechtevergabe zu umgehen, habe ich den Ordner rekursiv auf 777 gesetzt.
Der Rechner, auf dem das ganze läuft, hat in meinem Netzwerk die IP 192.168.0.190. Für die Konfiguration greife ich über ssh auf den Rechner zu.
Habt ihr noch einen Tipp für mich?
Grüße
Mawilo
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also erstens ist media nicht gleich medien, zweitens solltest du mod_python loswerden (ja, entgegen den Django-Empfehlungen, die ich persönlich einfach an dieser Stelle schlecht finde und damit nicht alleine bin) und stattdessen mod_fcgid oder mod_wsgi nutzen. Dann kannst du /media vom Apache ausliefern lassen und / auf dein Django-Entrypoint abbilden, so dass der Rest an Django weitergeleitet wird.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Die notwendigen Dateien liegen unter `$DJANGO_INSTALLATION/contrib/admin/media` und werden mit der URL `/media` angesprochen. Du musst daher in deiner Apache-Konfiguration diese URL auf obigen Pfad zeigen lassen. Mit der `settings.py`-Datei hat das nichts zu tun, die Defaults sind okay.
Stefan
Stefan
Btw ist /me letztens draufgekommen, dass es bei runserver nicht funktioniert wenn MEDIA_URL und ADMIN_MEDIA_PREFIX beide /media sind, das haut vorne und hinten nicht hin
Back to topic: Das hast du doch gelesen oder? http://docs.djangoproject.com/en/dev/ho ... ython/#id3
Back to topic: Das hast du doch gelesen oder? http://docs.djangoproject.com/en/dev/ho ... ython/#id3
- Mawilo
- User
- Beiträge: 452
- Registriert: Sonntag 22. Februar 2004, 10:58
- Wohnort: Sachsen
- Kontaktdaten:
Danke für die Hinweise - aber so langsam bekomme ich die Krise.
Um die Pfadangaben etwas eindeutiger zu gestalten, habe ich ein neues Projekt aufgesetzt - aber mit dem alten Fehler
So sieht jetzt das Root-Verzeichnis des Projektes aus:
In der Server-Konfiguration habe ich folgenden Absatz stehen:
In der Doku steht im Gegensatz zu dem Buch "Python Web Development with Django" die Zeile
drin. Wenn ich diese Zeile weglasse, ändert sich aber nix.
In der settings.py habe ich folgenden Eintrag gesetzt:
Getestet habe ich aber auch die Zeile:
Leider auch ohne Erfolg.
Nach meinem Verständnis wird mit ADMIN_MEDIA_PREFIX der Ordner angegeben, in dem die fehlenden Daten für die Admin-Oberfläche liegen. Die Einträge MEDIA_ROOT und MEDIA_URL in der settings.py werden nur für die Angabe des media-Ordners der app's benötigt - richtig?
Zum Setzen der Admin-Daten steht in der Doku einfach nur:
Grüße
Mawilo
@Leonidas: Ich möchte es gerne mit mod_python umsetzen, da ich im www auch keine anderen Module habe.
Um die Pfadangaben etwas eindeutiger zu gestalten, habe ich ein neues Projekt aufgesetzt - aber mit dem alten Fehler
So sieht jetzt das Root-Verzeichnis des Projektes aus:
Code: Alles auswählen
s_stephan@linux-server:/local/mediensammlung/musik> ll
insgesamt 28
lrwxrwxrwx 1 s_stephan users 59 18. Feb 13:37 admin_media -> /usr/lib/python2.6/site-packages/django/contrib/admin/media
drwxr-xr-x 2 s_stephan users 4096 18. Feb 13:28 db_content
-rw-r--r-- 1 s_stephan users 0 18. Feb 13:21 __init__.py
-rw-r--r-- 1 s_stephan users 130 18. Feb 13:28 __init__.pyc
-rw-r--r-- 1 s_stephan users 546 18. Feb 13:21 manage.py
drwxr-xr-x 2 s_stephan users 4096 18. Feb 13:47 media
-rw-r--r-- 1 s_stephan users 2863 18. Feb 13:39 settings.py
-rw-r--r-- 1 s_stephan users 1940 18. Feb 13:28 settings.pyc
-rw-r--r-- 1 s_stephan users 535 18. Feb 13:26 urls.py
Code: Alles auswählen
<Location "/">
SetHandler python-program
PythonPath "['/local/mediensammlung/'] + sys.path"
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE musik.settings
PythonOption django.root /musik
PythonDebug On
</Location>
Code: Alles auswählen
PythonOption django.root /mysite
drin. Wenn ich diese Zeile weglasse, ändert sich aber nix.
In der settings.py habe ich folgenden Eintrag gesetzt:
Code: Alles auswählen
ADMIN_MEDIA_PREFIX = '/admin_media/'
Code: Alles auswählen
ADMIN_MEDIA_PREFIX = 'http://192.168.0.190/admin_media/'
Nach meinem Verständnis wird mit ADMIN_MEDIA_PREFIX der Ordner angegeben, in dem die fehlenden Daten für die Admin-Oberfläche liegen. Die Einträge MEDIA_ROOT und MEDIA_URL in der settings.py werden nur für die Angabe des media-Ordners der app's benötigt - richtig?
Zum Setzen der Admin-Daten steht in der Doku einfach nur:
So einfach scheint es bei mir nicht zu sein.Create a symbolic link to the admin media files from within your document root. This way, all of your Django-related files -- code and templates -- stay in one place, and you'll still be able to svn update your code to get the latest admin templates, if they change.
Grüße
Mawilo
@Leonidas: Ich möchte es gerne mit mod_python umsetzen, da ich im www auch keine anderen Module habe.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Also magst du dich lieber mit einem verbuggten und konzeptuell kaputten Ding rumärgern, statt dich an der Flexibilität von FastCGI oder der einfacheren Konfiguration von mod_wsgi zu erfreuen? Naja, jedem das seine. Tipps zu mod_python kann ich auch keine geben - da mache ich immer einen großen Bogen darum.Mawilo hat geschrieben:@Leonidas: Ich möchte es gerne mit mod_python umsetzen, da ich im www auch keine anderen Module habe.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Wohl ist es, du hast nur nicht verstanden, was ein docroot ist; http://httpd.apache.org/docs/2.2/Mawilo hat geschrieben:
Zum Setzen der Admin-Daten steht in der Doku einfach nur:So einfach scheint es bei mir nicht zu sein.Create a symbolic link to the admin media files from within your document root. This way, all of your Django-related files -- code and templates -- stay in one place, and you'll still be able to svn update your code to get the latest admin templates, if they change.
Standardmäßig folgt Apache meines Wissen keinen Links. Das muss man erst einstellen. Ansonsten nochmal der Hinweis: ADMIN_MEDIA_PREFIX muss nicht verändert werden. Ich denke, das Problem ist die Apache-Konfiguration, nicht die von Django.
Stefan
Stefan
- Mawilo
- User
- Beiträge: 452
- Registriert: Sonntag 22. Februar 2004, 10:58
- Wohnort: Sachsen
- Kontaktdaten:
So, ich habe es mittlerweile hinbekommen - aber nur mit mod_wsgi.
@Leonidas: Ja, Du hattest Recht - es geht so einfacher
Hier die Angaben dazu in der httpd.conf:
und mein (Standard-) Scrip mod.wsgi:
Grüße
Mawilo
@Leonidas: Ja, Du hattest Recht - es geht so einfacher
Hier die Angaben dazu in der httpd.conf:
Code: Alles auswählen
LoadModule wsgi_module /usr/lib/apache2/mod_wsgi.so
Alias /media/ "/local/mediensammlung/musik/media/"
Alias /admin_media/ "/usr/lib/python2.6/site-packages/django/contrib/admin/media/"
<Directory /usr/lib/python2.6/site-packages/django/contrib/admin/media/>
Order deny,allow
Allow from all
</Directory>
<Directory /local/mediensammlung/musik/>
Order deny,allow
Allow from all
Options Indexes FollowSymLinks
</Directory>
WSGIScriptAlias / /local/mediensammlung/musik/mod.wsgi
Code: Alles auswählen
import os, sys
sys.path.append('/local/mediensammlung')
os.environ['DJANGO_SETTINGS_MODULE'] = 'musik.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Mawilo