Страница администратора Django отсутствует CSS - PullRequest
22 голосов
/ 04 апреля 2011

Я видел этот вопрос и рекомендации от Django Projects здесь , но все еще не могу заставить это работать.Мои страницы администратора Django вообще не отображают CSS.

enter image description here

Это моя текущая конфигурация.

settings.py

ADMIN_MEDIA_PREFIX = '/media/admin/'

httpd.conf

<VirtualHost *:80>
    DocumentRoot /home/django/sgel
    ServerName ec2-***-**-***-***.ap-**********-1.compute.amazonaws.com
    ErrorLog /home/django/sgel/logs/apache_error.log
    CustomLog /home/django/sgel/logs/apache_access.log combined
    WSGIScriptAlias / /home/django/sgel/apache/django.wsgi

    <Directory /home/django/sgel/media>
        Order deny,allow
        Allow from all
    </Directory>

    <Directory /home/django/sgel/apache>
        Order deny,allow
        Allow from all
    </Directory>

    LogLevel warn

    Alias /media/ /home/django/sgel/media/

</VirtualHost>

<VirtualHost *:80>
   ServerName sgel.com
   Redirect permanent / http://www.sgel.com/
</VirtualHost>

Кроме того, я также запустил следующеесоздать (я думаю) символическую ссылку ln -s /home/djangotest/sgel/media/admin/ /usr/lib/python2.6/site-packages/django/contrib/admin/media/

ОБНОВЛЕНИЕ

В моем файле httpd.conf

User django
Group django

Когда я запускаюls -l в моем каталоге /media

drwxr-xr-x 2 root root 4096 Apr  4 11:03 admin
-rw-r--r-- 1 root root    9 Apr  8 09:02 test.txt

Должен ли этот пользователь root быть вместо django?

UPDATE 2 Когда я введу ls -la в моем /media/admin папка

total 12
drwxr-xr-x 2 root root 4096 Apr 13 03:33 .
drwxr-xr-x 3 root root 4096 Apr  8 09:02 ..
lrwxrwxrwx 1 root root   60 Apr 13 03:33 media -> /usr/lib/python2.6/site-packages/django/contrib/admin/media/

Дело в том, что при переходе к /usr/lib/python2.6/site-packages/django/contrib/admin/media/ папка была пустой.Поэтому я скопировал папки CSS, IMG и JS из моей установки Django в /usr/lib/python2.6/site-packages/django/contrib/admin/media/, и она все еще не работала

Ответы [ 17 ]

13 голосов
/ 11 апреля 2011

В дополнение к исправлению символической ссылки, как предложил Даниэль Роузман, вам необходимо убедиться, что пользователь, на котором работает Apache, имеет доступ на чтение к носителю администратора.

  • Если вы делаете ls -l в своем медиа-каталоге, вы видите символическую ссылку?
  • Если вы cd admin из вашего медиа-каталога, это работает? Если вы затем запустите ls, можете ли вы увидеть админ-медиа?
  • Имеет ли пользователь, который запускает Apache, доступ на чтение к среде администратора?

Если все это работает, то обновите ваш вопрос, указав текущую конфигурацию и результаты этих команд, и мы еще раз рассмотрим.

Ответ на обновление : Хорошо, разрешения выглядят нормально. Похоже, у вас немного неправильная структура каталогов в вашем медиа-каталоге.

Тот факт, что /usr/lib/python2.6/site-packages/django/contrib/admin/media/ был пуст, тоже беспокоит. Как только вы решите непосредственную проблему, вам может понадобиться переустановить django в ожидаемом месте.

В любом случае, вот как должна выглядеть структура:

$ cd media
$ ls -la
drwxr-xr-x 2 root root 4096 Apr 13 03:33 .
drwxr-xr-x 3 root root 4096 Apr  8 09:02 ..
lrwxrwxrwx 1 root root   60 Apr 13 03:33 admin -> /usr/lib/python2.6/site-packages/django/contrib/admin/media/
-rw-r--r-- 1 root root    9 Apr  8 09:02 test.txt

То есть внутри каталога media/ должна быть ссылка admin непосредственно на каталог /admin/media вашей установки django.

Чтобы исправить то, что у вас есть, в каталоге media/admin/ запустите:

rm media
cd ..
rmdir admin

, а затем заново создайте символическую ссылку, как предложено в ответе Даниэля Роузмана.

7 голосов
/ 04 апреля 2011

Здесь есть пара проблем, связанных с вашей символической ссылкой.

Во-первых, источник и цель должны были быть наоборот (я сам всегда ошибаюсь).

Во-вторых, вы использовали совершенно другой путь по сравнению с тем, который вы указали в вашей конфигурации Apache - djangotest/sgelections против django/sgel.

Сделайте так:

cd /home/django/sgel/media/
ln -s /usr/lib/python2.6/site-packages/django/contrib/admin/media/ admin
6 голосов
/ 03 октября 2014

Простое решение - изменить строку в вашем файле wsgi.py

    from django.core.wsgi import get_wsgi_application
    application = get_wsgi_application()

становится

    from django.core.wsgi import get_wsgi_application
    from dj_static import Cling

    application = Cling(get_wsgi_application())

Самый простой способ правильно отобразить Admin CSS. Приветствия

4 голосов
/ 31 августа 2011

Другой метод, который я только что нашел, и он выглядит как правильно поддерживаемый метод.

Убедитесь, что в ваших настройках есть модуль staticfiles.Также настройте параметр STATIC_ROOT.

https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#module-django.contrib.staticfiles

Создайте папку / static / и установите разрешения.

Настройте apache с / static / alias.

alias /static <path to project root>/static/
<Directory "<path to project root>/static/">
    Order deny,allow
    Allow from all
</Directory>

затем из папки вашего проекта запустите

sudo python manage.py collectstatic [-n to do a dry run]

Все, что похоже на это, - это скопируйте статические файлы администратора в папку ваших проектов для веб-обслуживания.

3 голосов
/ 17 октября 2012

Итак, первое, что вы хотите сделать, это изменить каталог на статическую папку и добавить символическую ссылку.

Я сделал это в виртуальной среде, поэтому я использую

ln -s ~/virtualenv/my-virtualenv/lib/python2.x/site-packages/django/contrib/admin/static/admin admin

Следующим шагом является редактирование вашего httpd.conf

Псевдоним / статический / admin / ~ / mysite / static / admin /

Перезагрузите сервер apache и вуаля!

2 голосов
/ 22 октября 2013

У меня была такая же проблема, но ничего из этого не помогло. Оказалось, моя версия Grappelli устарела. (https://github.com/sehmaschine/django-grappelli) Я удалил его, а затем переустановил с более новой версией. pip install django-grappelli==2.4.4 Если вы используете скин администратора, как я, вы можете обновить его.

2 голосов
/ 13 апреля 2011

В Firebug перейдите на вкладку Net и просмотрите запросы, сделанные вашим браузером для файлов css.посмотрите ответ на ваши запросы там сам.Я думаю, что вы найдете там проблему.У меня недавно была такая же проблема.Проблема заключалась в том, что когда мой браузер запрашивал файлы css, ответ содержал содержимое html-страницы входа в мой проект.Я не помню сейчас, как я решил свою проблему.Я постараюсь вспомнить и опубликовать решение здесь.Дайте мне знать, если у вас такая же проблема.

1 голос
/ 20 декабря 2011

Я знаю, что это было решено, но я думаю, что стоит поделиться своим решением.

Я просто добавил псевдоним в apache, и он работал до сих пор.

    Alias /static/admin/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/
    Alias admin/media/ /usr/local/lib/python2.6/dist-packages/django/contrib/admin/media/
1 голос
/ 08 апреля 2011

можете ли вы запустить

python
>>> import django
>>> print django.__file__

другой вопрос - ваши обычные носители помещаются в / home / django / sgel / media / work (т.е. обслуживаются Apache, как и ожидалось?)

1 голос
/ 13 апреля 2011

Раньше у меня была та же проблема, я решил ее с помощью FireFox плагина FireFox, который сообщает вам, где ваш сайт ищет медиафайлы, а также как вы проверяли содержимое папки admin / media, чтобы увидеть они были пусты?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...