почему мой админский сайт django не имеет стиля css - PullRequest
65 голосов
/ 12 декабря 2010

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

Но у него нет стиля CSS:

alt text

чтоя могу сделать?

спасибо

Ответы [ 15 ]

53 голосов
/ 06 апреля 2012

После настройки STATIC_ROOT и STATIC_URL может потребоваться запустить

python manage.py collectstatic
16 голосов
/ 02 октября 2011

ADMIN_MEDIA_PREFIX устарела, используйте вместо нее STATIC_URL. Установка STATIC_URL = '/static/' в settings.py должна сделать эту работу. Попробуйте:

import os.path  import sys

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))

и затем:

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'

Работает на Django 1.4 pre-alpha SVN-16920.

14 голосов
/ 12 декабря 2010

Django не обслуживает статические файлы самостоятельно. Вы должны указать, где находятся файлы.

ADMIN_MEDIA_PREFIX в файле settings.py укажет Django в правильном месте.

Поскольку вы используете версию для разработки, вам понадобится документ для разработчиков статических файлов с практическими рекомендациями . Ссылка Адама приведет вас к версии 1.2.

9 голосов
/ 27 мая 2013

Я тоже столкнулся с этой проблемой после учебника по Django.В главе 5 «Установка модели» в книге указывается ссылка на стандартную INSTALLED_APPS- «Временно закомментируйте все шесть из этих строк, поставив перед ними хеш-символ (#)».http://www.djangobook.com/en/2.0/chapter05.html

Затем в главе 6 Книга говорит читателю раскомментировать 4 из этих 6 строк: «Обратите внимание, что мы закомментировали эти четыре записи INSTALLED_APPS в главе 5. Теперь раскомментируйте их».

Но строка statcifiles - это то, что нужно для восстановления CSS на странице администратора, поэтому раскомментируйте, что 'django.contrib.staticfiles',

7 голосов
/ 20 июля 2013

Я прочитал несколько других тем, пытаясь это исправить ... прибег к псевдониму, как в других темах. Это предполагает, что ваше собственное приложение правильно обслуживает статические файлы, что указывает на то, что ваши STATIC_ROOT и STATIC_URL имеют правильные настройки.

STATIC_ROOT = ''
STATIC_URL = '/static/'

Тогда (из вашего статического каталога):

ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ sudo ln -s /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/ admin

Надеюсь, это кому-нибудь поможет ... В этой теме много тем. (

3 голосов
/ 05 декабря 2013

В дополнение ко многим другим полезным ответам у меня была проблема, которая еще не была замечена. После обновления с Django 1.3 до 1.6 в моем каталоге статических файлов была сломана символическая ссылка на статические файлы администратора django.

Мой файл settings.py был настроен с:

STATICFILES_DIRS = (
    '/var/www/static/my-dev',
)

Согласно этот ответ ,

Теперь Django ожидает найти статические файлы администратора по URL /admin/.

У меня была символическая ссылка /var/www/static/my-dev/admin, для которой было установлено:

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/

Это местоположение больше не существует в django 1.6, поэтому я обновил ссылку на:

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/

А теперь мой админский сайт работает нормально.

3 голосов
/ 15 августа 2012

В /project_name/project_name/settings.py вам нужно установить STATIC_URL, чтобы сообщить вашему сайту, какой URL использовать для статических файлов.

Затем установите STATIC_ROOT в качестве некоторой папки в вашей файловой системе, которая отличается от любой из ваших каталогов, перечисленных в списке STATICFILES_DIRS.

После установки STATICFILES_ROOT вы запускаете python manage.py collectstatic из каталога проекта.

При этом будут скопированы все статические файлы администратора и все файлы в любых других папках, перечисленных в списке STATICFILES_DIRS. По сути, это помещает все ваши статические файлы в одно место, чтобы вы могли перемещать их в свой CDN при развертывании своего сайта. Если вы похожи на меня и у вас нет CDN, у вас есть два варианта:

  1. Добавьте папку, которую вы указали как STATIC_ROOT, в список STATICFILES_DIRS. Это позволит искателям статических файлов в django найти все статические файлы.
  2. Переместите всю папку статических файлов куда-нибудь еще в вашей файловой системе и попросите STATICFILES_DIRS включить это новое местоположение.

В этом ответе я не комментирую безопасность, это просто способ, которым я смог разработать свой веб-сервер для небольших проектов. Я ожидаю, что вам понадобится CDN, как подсказывает django, если вы делаете что-то более масштабное.

UPDATE: Я только столкнулся с этой проблемой, и этот метод не совсем то, что я думаю, вы хотите. То, что сработало для меня, было после того, как я запустил collectstatic, я просто скопировал статические файлы администратора, которые он поместил в STATICFILES_ROOT, в каталог, который я использовал для своих собственных статических файлов. Это решило проблему для меня.

2 голосов
/ 01 октября 2018

Моя проблема была решена путем создания новой виртуальной среды для проекта, до этого я использовал общий интерпретатор python системного уровня.

$ mkvirtualenv myproject

Ссылка: https://docs.djangoproject.com/en/2.1/howto/windows/

2 голосов
/ 07 февраля 2015

Следуя учебному пособию по Django, у меня возникла похожая проблема, и в моем случае проблема заключалась в использовании mimetype, используемого сервером разработки при обслуживании файлов CSS.

Служба mimetype была 'application / x-css', что привело к появлению следующего предупреждения в Chrome (на вкладке "Сеть" инструментов разработчика):

Ресурс интерпретируется как таблица стилей, но передается с типом MIME. application / x-css: "http://127.0.0.1:8000/static/admin/css/base.css"

Обходной путь, который я нашел: изменив mimetype для обслуживания, добавив следующие строки в файл manage.py веб-приложения django:

import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'

Примечание: у меня работал с Django 1.7.4 на Python 2.7 и Chrome 40.0

2 голосов
/ 02 ноября 2013

Если вы используете сервер Apache для размещения вашего сайта django, вам нужно убедиться, что статический псевдоним указывает на ваш каталог / site / site_media / static /. Если ваши статические файлы находятся в каталоге / site / site / site_media / static /, предыдущая конфигурация псевдонима Apache не будет работать.

...