Я делаю сайт администратора Django, используя версию разработки Django
Но у него нет стиля CSS:
А что я могу сделать?
Спасибо
Я делаю сайт администратора Django, используя версию разработки Django
Но у него нет стиля CSS:
А что я могу сделать?
Спасибо
Django не обслуживает статические файлы самостоятельно. Вы должны указать, где находятся файлы.
ADMIN_MEDIA_PREFIX в settings.py будет указывать Django в нужном месте.
Поскольку вы используете версию для разработки, вам понадобится dev-specific document для практических действий с статическими файлами. Ссылка Адама приведет вас к версии 1.2.
После настройки STATIC_ROOT
и STATIC_URL
вам может потребоваться запустить
python manage.py collectstatic
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.
Я столкнулся с этой проблемой, также следуя учебнику по книге Django. В главе 5 | Установка модели в книге указывается, когда указано значение по умолчанию INSTALLED_APPS- "Временно закомментируйте все шесть из этих строк, поставив перед ними символ хеша (#)". http://www.djangobook.com/en/2.0/chapter05.html
Затем, в Главе 6, Книга говорит читателю раскомментировать 4 из этих 6 строк - "Обратите внимание, что мы прокомментировали эти четыре записи INSTALLED_APPS в главе 5. Раскомментируйте их сейчас".
Но строка statcifiles - это то, что необходимо для восстановления CSS на странице администратора, поэтому раскомментируйте, что 'django.contrib.staticfiles',
Я прочитал несколько других потоков, пытающихся исправить это... прибегал к псевдониму, как в других потоках. Это предполагает, что ваше собственное пользовательское приложение обслуживает статические файлы правильно, что указывает на то, что ваши STATIC_ROOT и STATIC_URL имеют правильные настройки.
STATIC_ROOT = ''
STATIC_URL = '/static/'
Затем (из вашего статического каталога):
[email protected]:/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
из каталога проекта.
Это скопирует все статические файлы admin и все файлы в любые другие папки, перечисленные в списке STATICFILES_DIRS
. В основном это ставит все ваши статические файлы в одном месте, чтобы вы могли перенести их на CDN при развертывании вашего сайта. Если вы похожи на меня и у вас нет CDN, у вас есть два варианта:
STATIC_ROOT
в список STATICFILES_DIRS
. Это позволит поискам статических файлов в django найти все статические файлы.STATICFILES_DIRS
, чтобы включить это новое местоположение.Я не комментирую безопасность с этим ответом, это именно то, как я смог разработать с помощью своего веб-сервера для небольших проектов. Я ожидаю, что вам понадобится CDN, поскольку django предложит, если вы делаете что-то более масштабное.
UPDATE:
Я просто столкнулся с этой проблемой, и этот метод не совсем сделал то, что я думаю, вы хотите. То, что закончило работать для меня, было после того, как я запустил collectstatic
. Я просто скопировал статические файлы admin, которые он поместил в STATICFILES_ROOT
, в каталог, который я использовал для своих собственных статических файлов. Это решило проблему для меня.
В дополнение ко многим другим полезным ответам, у меня была проблема, которая еще не была отмечена. После обновления с Django 1.3 до 1.6 мой каталог статических файлов имел сломанную символическую ссылку на статические файлы admin django.
Настройки settings.py были настроены с помощью:
STATICFILES_DIRS = (
'/var/www/static/my-dev',
)
В соответствии с этим ответом,
Теперь Django ожидает найти статические файлы администратора по URL-адресу /Админ/.
У меня была символическая ссылка /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/
И теперь мой админ-сайт работает правильно.
Если вы используете сервер Apache для размещения вашего сайта django, вам нужно убедиться, что статический псевдоним указывает на ваш/каталог на сайт /site _media/static/. Если ваши статические файлы находятся в каталоге/на сайте /site/site _media/static/, предыдущая конфигурация псевдонимов Apache не будет работать.
Во время выполнения учебника Django у меня была аналогичная проблема, и в моем случае проблема заключалась в типе mimetype, используемом сервером разработки при обслуживании файлов css.
Подпрограмма mimetype была "application/x-css", которая привела к следующему предупреждающему сообщению в Chrome (на вкладке "Сеть" инструментов разработчика):
Ресурс интерпретируется как таблица стилей, но переносится с типом MIME application/x-css: " http://127.0.0.1:8000/static/admin/css/base.css"
Обходной путь, который я нашел: изменение типа mimetype для обслуживания путем добавления следующих строк в файл ddango webapp manage.py:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Примечание: работал у меня с Django 1.7.4 на Python 2.7 и Chrome 40.0
Моя проблема была решена путем создания новой виртуальной среды для проекта, до этого я использовал общий интерпретатор Python системного уровня.
$ mkvirtualenv myproject
Убедитесь, что 'django.contrib.staticfiles'
находится в вашем INSTALLED_APPS
в вашем settings.py
Такая же проблема, с которой я столкнулся при разработке сайта в 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.path.join(BASE_DIR, "static" )) и статическая папка не существует
После провала тысяч предложений, я, наконец, нашел решение, которое помогло. Вот то, что я попробовал и что я использовал. Я использую django-1.11 и веб-сервер nginx. Во-первых, я убедился, что мои файлы CSS/js не получают 404 в консоли браузера. После этого я мог видеть предупреждение
Ресурс интерпретируется как таблица стилей, но передается с типом MIME text/plain
Я нашел base.html в шаблонах администратора и удалил
type="text/css"
и теперь строки выглядят так:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
Это исправило проблему для меня.
запустить: python manage.py collectstatic
Добавьте эту строку в Vhost, который находится по адресу: /etc/apache2/sites-available/000-default.conf
Псевдоним/статический /admin//var/www/html/example.com/static/admin
Вот все настройки Vhost для настройки Django
<VirtualHost *:80>
ServerName gautam.tech
ServerAlias www.gautam.tech
WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
WSGIProcessGroup gautam.tech
#Your static files location
Alias /static /var/www/html/gautam.tech/static
Alias /media/ /var/www/html/gautam.tech/media
Alias /static/admin/ /var/www/html/gautam.tech/static/admin
<Directory /var/www/html/gautam.tech/static>
Require all granted
</Directory>
<Directory /var/www/html/gautam.tech/media>
Require all granted
</Directory>
WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py
DocumentRoot /var/www/html/gautam.tech
<Directory /var/www/html/gautam.tech>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
CustomLog /var/www/html/gautam.tech/access.log combined
ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>
Это будет работать точно!
Эта проблема находится на сервере dev/test/prod и использует Nginx, выполните следующие действия.
установите конфиги в settings.py как что-то ниже
STATIC_URL = '/static/'
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
Запустите приведенную ниже команду, чтобы создать файлы css и js в статической папке
$ python manage.py collectstatic
Конфигурация в /etc/nginx/sites-enabled/example (Nginx) для обслуживания статических файлов
location /static/ {
alias /project/root/folder/static/;
}
это работает хорошо и легко. Я переместил (вручную) папку. просто вам нужно скопировать ваш static/admin
из каталога основного проекта и вставить его в public_html static/
, если нет статической папки, вы должны выполнить следующую команду в терминале
python manage.py collectstatic
здесь вы идете с CSS работы администратора Django