Подтвердить что ты не робот

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

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

Но у него нет стиля CSS:

alt text

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

Спасибо

4b9b3361

Ответ 1

Django не обслуживает статические файлы самостоятельно. Вы должны указать, где находятся файлы.

ADMIN_MEDIA_PREFIX в settings.py будет указывать Django в нужном месте.

Поскольку вы используете версию для разработки, вам понадобится dev-specific document для практических действий с статическими файлами. Ссылка Адама приведет вас к версии 1.2.

Ответ 2

После настройки STATIC_ROOT и STATIC_URL вам может потребоваться запустить

python manage.py collectstatic

Ответ 3

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.

Ответ 4

Я столкнулся с этой проблемой, также следуя учебнику по книге Django. В главе 5 | Установка модели в книге указывается, когда указано значение по умолчанию INSTALLED_APPS- "Временно закомментируйте все шесть из этих строк, поставив перед ними символ хеша (#)". http://www.djangobook.com/en/2.0/chapter05.html

Затем, в Главе 6, Книга говорит читателю раскомментировать 4 из этих 6 строк - "Обратите внимание, что мы прокомментировали эти четыре записи INSTALLED_APPS в главе 5. Раскомментируйте их сейчас".

Но строка statcifiles - это то, что необходимо для восстановления CSS на странице администратора, поэтому раскомментируйте, что   'django.contrib.staticfiles',

Ответ 5

Я прочитал несколько других потоков, пытающихся исправить это... прибегал к псевдониму, как в других потоках. Это предполагает, что ваше собственное пользовательское приложение обслуживает статические файлы правильно, что указывает на то, что ваши 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

Надеюсь, это поможет кому-то... в этой теме много потоков. : (

Ответ 6

В /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, в каталог, который я использовал для своих собственных статических файлов. Это решило проблему для меня.

Ответ 7

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

И теперь мой админ-сайт работает правильно.

Ответ 8

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

Ответ 9

Во время выполнения учебника 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

Ответ 10

Моя проблема была решена путем создания новой виртуальной среды для проекта, до этого я использовал общий интерпретатор Python системного уровня.

$ mkvirtualenv myproject

Ответ 11

Убедитесь, что 'django.contrib.staticfiles' находится в вашем INSTALLED_APPS в вашем settings.py

Ответ 12

Такая же проблема, с которой я столкнулся при разработке сайта в 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)

Ответ 13

Если у вас есть значение, установленное в settings.py для STATICFILES_DIRS, и заявленная папка не существует или находится в неправильном месте, это приведет к тому, что у администратора не будет стиля например путем определения STATICFILES_DIRS = (os.path.join(BASE_DIR, "static" )) и статическая папка не существует

Ответ 14

После провала тысяч предложений, я, наконец, нашел решение, которое помогло. Вот то, что я попробовал и что я использовал. Я использую 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 %}" /> 

Это исправило проблему для меня.

Ответ 15

запустить: 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>

Это будет работать точно!

Ответ 16

Эта проблема находится на сервере 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/;
    }
    

Ответ 17

это работает хорошо и легко. Я переместил (вручную) папку. просто вам нужно скопировать ваш static/admin из каталога основного проекта и вставить его в public_html static/, если нет статической папки, вы должны выполнить следующую команду в терминале

python manage.py collectstatic

здесь вы идете с CSS работы администратора Django