почему мой сайт администратора django не имеет стиля css
Я делаю сайт администратора django с помощью версия разработки django
но у него нет стиля css:

что я могу сделать .
спасибо
14 ответов:
Django не обслуживает статические файлы самостоятельно. Вы должны сказать ему, где находятся файлы.
The ADMIN_MEDIA_PREFIX в settings.py укажет Джанго в нужном месте.
Так как вы используете версию разработки, вы хотите 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список. Это позволит поисковикам staticfiles в django найти все статические файлы.- переместите всю папку статических файлов в другое место в вашей файловой системе и направьте
STATICFILES_DIRSвключить новое место.I не комментируйте безопасность с этим ответом, это просто способ, которым я смог разработать свой веб-сервер для небольших проектов. Я ожидаю, что вы захотите CDN, как предлагает django, если вы делаете что-то более масштабное.
обновление: Я просто столкнулся с этой проблемой и этот способ не совсем то, что я думаю, что вы хотите. Что в конечном итоге работает для меня после того, как я побежал
collectstaticя просто скопировал статические файлы администратора, которые он поместил вSTATICFILES_ROOTв каталог, который я использовал для моего собственные статические файлы. Это решило проблему для меня.
Если вы используете сервер Apache для размещения вашего сайта django, вам нужно убедиться, что статический псевдоним указывает на ваш /каталог на сайт/site_media/static/. Если ваши статические файлы находятся в Каталоге / для сайта / 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 приложение / x-css: "http://127.0.0.1:8000/static/admin/css/base.css"
обходной путь, который я нашел: изменение типа mimetype для обслуживания путем добавления следующих строк в веб-приложение django 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. Никто не работал.
но когда я попробовал тот же сайт на другой системе которая питон-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")) и статическая папка не существует
потерпев неудачу после попытки 1000 предложений, я, наконец, нашел решение, которое помогло. Вот что я пробовал и что я использовал. Я использую django-1.11 и веб-сервер nginx. Во-первых, я убедился, что мои CSS/js файлы не получают 404 в консоли браузера. После этого я увидел предупреждение
ресурс интерпретируется как таблица стилей, но передается с типом MIME text / plain
Я нашел базу.html в шаблонах администратора и удалены
type="text/css"и теперь выглядит так:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />это исправило проблему для меня.
моя проблема была решена путем создания новой виртуальной среды для проекта, до этого я использовал общий системный интерпретатор python.
$ mkvirtualenv myproject
Comments