почему мой сайт администратора django не имеет стиля css
Я делаю сайт администратора django, используя версия разработки django
но у него нет стиля css:
что я могу сделать .
спасибо
14 ответов
Django не обслуживает статические файлы самостоятельно. Вы должны сказать ему, где находятся файлы.
на ADMIN_MEDIA_PREFIX в settings.py укажет Django в правильном месте.
поскольку вы используете версию разработки, вам понадобится dev-конкретный документ для статических файлов how-to. Ссылка Адама приведет вас к версии 1.2.
после настройки STATIC_ROOT
и STATIC_URL
, возможно, вам придется запустить
python manage.py collectstatic
ADMIN_MEDIA_PREFIX
теперь устарел, используйте . Настройка STATIC_URL = '/static/'
in 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.
Я столкнулся с этой проблемой, а также после учебника книги Django. В главе 5 / Установка модели в книге указано, что ссылка на INSTALLED_APPS по умолчанию- "Временно прокомментируйте все шесть этих строк, поставив перед ними хэш-символ ( # )." http://www.djangobook.com/en/2.0/chapter05.html
затем, в главе 6, книга говорит читателю раскомментировать 4 из этих 6 строк- "обратите внимание, что мы прокомментировали эти четыре записи INSTALLED_APPS в главе 5. Раскомментируйте их сейчас."
но строка statcifiles необходима для восстановления CSS на странице администратора, поэтому раскомментируйте, что - Джанго.ВНО.staticfiles',
Я прочитал несколько других потоков, пытаясь исправить это...прибегал к псевдониму, как и в других потоках. Это предполагает, что ваше собственное приложение правильно обслуживает статические файлы, что указывает на то, что ваши 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
надеюсь, это кому-то поможет...на эту тему много тем. :(
на /project_name/project_name/settings.py
необходимо указать STATIC_URL
чтобы сообщить вашему сайту, какой url использовать для статических файлов.
затем установить STATIC_ROOT
быть какой-то папкой в вашей файловой системе, которая не совпадает ни с одним из ваших каталогов, перечисленных в STATICFILES_DIRS
список.
один раз STATICFILES_ROOT
установлен, вы бы побежали python manage.py collectstatic
из каталога проекта.
это скопирует все статические файлы администратора и все файлы в любых других папках, перечисленных в STATICFILES_DIRS
список. В основном это ставит все ваши статические файлы в одном месте, чтобы вы могли перемещать их в CDN при развертывании сайта. Если вы похожи на меня и не есть КДС, то у вас есть два варианта:
- добавьте папку, которую вы установили как
STATIC_ROOT
доSTATICFILES_DIRS
список. Это позволит найти статические файлы в django, чтобы найти все статические файлы. - переместите всю папку статических файлов куда-нибудь еще в вашей файловой системе и направьте
STATICFILES_DIRS
включить новое место.
I не комментируйте безопасность с этим ответом, это просто способ, которым я смог разработать с моим веб-сервером для небольших проектов. Я ожидаю, что вы захотите CDN, как предлагает django, если вы делаете что-то большее.
обновление:
Я просто столкнулся с этой проблемой и этот способ не совсем то, что я думаю, что вы хотите. То, что в конечном итоге работало на меня, было после того, как я побежал collectstatic
я просто скопировал статические файлы администратора, которые он поместил в STATICFILES_ROOT
в каталог, который я использовал для моего собственные статические файлы. Это решило проблему для меня.
Если вы используете сервер Apache для размещения вашего сайта django, вам нужно убедиться, что статический псевдоним указывает на ваш /каталог на сайт/site_media/static/. Если ваши статические файлы находятся в / directory to site/site/site_media/ static/, предыдущая конфигурация псевдонима Apache не будет работать.
в дополнение ко многим другим полезным ответам у меня была проблема, которая еще не была отмечена. После обновления с Django 1.3 до 1.6 в моем каталоге статических файлов была сломана символическая ссылка на статические файлы администратора django.
мой settings.py был настроен с:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
по данным ответ,
Django теперь ожидает найти статические файлы администратора под URL-адресом /администратор./
I была символическая ссылка /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/
и теперь мой админ работает правильно.
следуя учебнику Django, у меня была аналогичная проблема, и в моем случае проблема заключалась в типе mimetype, используемом сервером разработки при обслуживании файлов css.
обслуживаемый тип mimetype был "application / x-css", что привело к следующему предупреждающему сообщению в Chrome (на вкладке "Сеть" инструментов разработчика):
ресурс интерпретируется как таблица стилей, но передается с типом MIME применение/х-УСБ: "http://127.0.0.1:8000/static/admin/css/base.в CSS"
обходной путь, который я нашел: изменение типа mimetype для обслуживания путем добавления следующих строк в django webapp manage.py файл:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Примечание: работал для меня с Django 1.7.4 на Python 2.7 и Chrome 40.0
такая же проблема, с которой я столкнулся при разработке сайта в django-1.10.5 и python-2.7.13. Но в моем firefox-51 и chrome страница входа в систему смогла получить css, но по-прежнему не было стиля. Но странно, что он работал над IE-8..
Я попытался сделать все возможное, упомянутое здесь, и подходит для моего набора версий sw. Ничего не помогало.
но когда я попробовал тот же сайт на другой системе, в которой был python-2.7.8, он работал..
просто опубликовано, если это может кому-то помочь...
отредактировано: позже я обнаружил, что в python-2.7.13, написав следующие две строки в settings.py (плюс очистка кэша браузера) сделал трюк
import mimetypes
mimetypes.add_type("text/css", ".css", True)
Если у вас есть значение, установленное в settings.py для STATICFILES_DIRS и объявленной папки не существует или в неправильном месте это приведет к тому, что у администратора не будет стиля например определяя STATICFILES_DIRS = (os.путь.join (BASE_DIR, " static")) и статическая папка не существует
ресурс интерпретируется как таблица стилей, но передается с помощью типа MIME text / plain
Я нашел базу.html в шаблонах администратора и удалены
type="text/css"
и теперь выглядит так:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
это исправило проблему для меня.
моя проблема была решена путем создания новой виртуальной среды для проекта, до этого я использовал интерпретатор python общего системного уровня.
$ mkvirtualenv myproject