почему мой сайт администратора django не имеет стиля css

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

но у него нет стиля css:

alt text

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

спасибо

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 при развертывании сайта. Если вы похожи на меня и не есть КДС, то у вас есть два варианта:

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

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

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


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


обеспечить 'django.contrib.staticfiles' в своем INSTALLED_APPS в settings.py


в дополнение ко многим другим полезным ответам у меня была проблема, которая еще не была отмечена. После обновления с 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

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