Я делаю сайт администратора Django, используя версию для разработки Django
Но у него нет стиля CSS:
А что я могу сделать?
благодаря
Я делаю сайт администратора Django, используя версию для разработки Django
Но у него нет стиля CSS:
А что я могу сделать?
благодаря
Ответы:
Django не обслуживает статические файлы самостоятельно. Вы должны указать ему, где находятся файлы.
ADMIN_MEDIA_PREFIX в settings.py укажет Джанго в нужном месте.
Поскольку вы используете версию для разработки, вам понадобится специальный документ для разработчиков с инструкциями по статическим файлам . Ссылка Адама приведет вас к версии 1.2.
После настройки STATIC_ROOT
и STATIC_URL
вам, возможно, придется запустить
python manage.py collectstatic
STATIC_ROOT
и то же имя для и STATIC_URL
, например: я объединил «staticfiles» и «static» , использовал STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"
и STATIC_URL="/static/"
. Мое приложение работало нормально, но файлы администратора найти не удалось. так что измените его как на «staticfiles», так и на «static»
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.
static/admin
внутри, static/css/
я могу получить доступ к файлам css. Таким образом, кажется, что я могу получить доступ к файлам css, только если они находятся внутри, static/files
но collectstatic не помещает их туда. Конечно, перемещение папки вручную просто не работает, потому что шаблоны продолжают указывать на static/admin
.
Я столкнулся с этой проблемой, следуя руководству по Django Book. В главе 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/'
Затем (из вашего статического каталога):
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 при развертывании сайта. Если вы похожи на меня и у вас нет CDN, у вас есть два варианта:
STATIC_ROOT
в STATICFILES_DIRS
список. Это позволит поисковикам статических файлов в django найти все статические файлы.STATICFILES_DIRS
это новое местоположение.В этом ответе я не комментирую безопасность, это просто способ, которым я смог разработать свой веб-сервер для небольших проектов. Я ожидаю, что вам понадобится CDN, как предлагает django, если вы делаете что-то более масштабное.
ОБНОВЛЕНИЕ: я только что столкнулся с этой проблемой, и этот метод не совсем сделал то, что я думаю, вы хотите. Что в итоге сработало для меня, так это то, что после запуска collectstatic
я просто скопировал статические файлы администратора, которые он поместил в STATICFILES_ROOT
каталог, который я использовал для своих собственных статических файлов. Это решило проблему для меня.
Помимо того, что многие другие ответы были полезны, у меня была проблема, которую еще не заметили. После обновления с 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/
И теперь мой админ-сайт работает нормально.
Если вы используете сервер Apache для размещения своего сайта django, вам необходимо убедиться, что статический псевдоним указывает на ваш каталог / site / 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, который будет обслуживаться, путем добавления следующих строк в файл manage.py django webapp:
import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'
Примечание: у меня работал с Django 1.7.4 на Python 2.7 и Chrome 40.0
Content-Type: text/plain
и не отображаются на странице.
Такая же проблема, с которой я столкнулся при разработке сайта на django-1.10.5 и python-2.7.13. Но в моем firefox-51 и chrome страница входа могла получить css, но все еще не было стиля. Но, как ни странно, он работал на IE-8 ..
Я пробовал делать все возможное, упомянутое здесь и подходящее для моего набора версий ПО. Ни один не работал.
Но когда я попробовал тот же сайт в другой системе с python-2.7.8, он сработал.
Просто опубликовал, если это может кому-то помочь ...
отредактировано: позже я обнаружил, что в python-2.7.13 написание следующих двух строк в settings.py (плюс очистка кеша браузера) помогло
import mimetypes
mimetypes.add_type("text/css", ".css", True)
Моя проблема была решена путем создания новой виртуальной среды для проекта, до этого я использовал интерпретатор Python общего уровня системы.
$ mkvirtualenv myproject
Ссылка: https://docs.djangoproject.com/en/2.1/howto/windows/
бежать: python manage.py collectstatic
Добавьте эту строку в Vhost, который находится по адресу: /etc/apache2/sites-available/000-default.conf
Псевдоним / static / 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
config в / etc / nginx / sites-enabled / example (Nginx) для обслуживания статических файлов
location /static/ {
alias /project/root/folder/static/;
}
это работает нормально и легко. Я переместил (вручную) папку. просто вам нужно скопировать его static/admin
из каталога основного проекта и вставить его в public_html, static/
если нет статической папки, вам нужно запустить следующую команду в терминале
python manage.py collectstatic
здесь вы идете с css, работающим с администратором Django
Если у вас есть значение, установленное в 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 %}" />
Это устранило проблему для меня.
Настройка статических файлов.
Убедитесь, что они django.contrib.staticfiles
включены в ваш INSTALLED_APPS. .
В вашем файле settings.py определите STATIC_URL, например:
STATIC_URL = '/static/'
для более подробной информации статические файлы
Панель администратора работала нормально, за исключением того, что css не загружался. Это работало для Lightsail Django с Apache
1. Определите STATIC_ROOT и STATIC_URL в settings.py
STATIC_ROOT = '/opt/bitnami/projects/decisions/decision/'
STATIC_URL = '/static/'
2. Извлечь (скопировать) файлы ресурсов администратора в проект
запустите python manage.py collectstatic
эту команду, чтобы создать /opt/bitnami/projects/decisions/decision/admin
папку с css/
fonts/
img/
js/
подпапками
3. Сделайте / статический URL-адрес доступным из apache
Вставьте этот фрагмент /opt/bitnami/apache2/conf/bitnami/bitnami.conf
(если вы настроили ssl, местоположение файла будет /opt/bitnami/apache2/conf/bitnami/bitnami-ssl.conf
)
Alias /static/ "/opt/bitnami/projects/decisions/decision/"
<Directory "/opt/bitnami/projects/decisions/decision/">
Order allow,deny
Options Indexes
Allow from all
IndexOptions FancyIndexing
</Directory>
4. Не забудьте перезапустить apache.
sudo /opt/bitnami/ctlscript.sh restart apache