Я роблю сайт адміністратора 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
але collestatic не розміщує їх там. Звичайно, переміщення папки вручну просто не працює, оскільки шаблони продовжують вказувати static/admin
.
Я також натрапив на це питання, слідуючи навчальному посібнику з книги 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/'
Потім (із вашого статичного каталогу):
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 /. Якщо ваші статичні файли знаходяться в / каталог на сайт / сайт / сайт_медіа / статичний /, попередня конфігурація псевдоніма Apache не буде працювати.
Дотримуючись підручника з Django, у мене була подібна проблема, і в моєму випадку проблема полягала в mimeype, який використовував сервер розробки при обслуговуванні файлів css.
Обслуговуваний тип mimet був "application / x-css", що призвело до появи наступного попереджувального повідомлення в Chrome (на вкладці "Мережа" інструментів розробника):
Ресурс інтерпретується як Таблиця стилів, але передається із застосуванням типу MIME / x-css: " http://127.0.0.1:8000/static/admin/css/base.css "
Обхідний шлях, який я знайшов: зміна типу mime, який буде обслуговуватися, додавши наступні рядки до файлу manage.py веб-програми django:
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 ..
Я намагався зробити все можливе, згадане тут і підходить для мого набору версій sw. Жоден не працював.
Але коли я спробував той самий сайт в іншій системі, в якій був 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>
Це точно спрацює!
Якщо у вас є значення, встановлене в settings.py для STATICFILES_DIRS, а оголошена папка не існує або в неправильному розташуванні, це призведе до того, що адміністратор не матиме стилю, наприклад, визначивши STATICFILES_DIRS = (os.path.join (BASE_DIR, "static" )), а статична папка не існує
Не вдавшись, спробувавши тисячі пропозицій, я нарешті знайшов рішення, яке допомогло. Ось те, що я пробував і що використовував. Я використовую веб-сервер django-1.11 та nginx. По-перше, я переконався, що мої файли CSS / js не отримують 404 на консолі браузера. Після цього я міг побачити попередження
Ресурс інтерпретується як Таблиця стилів, але передається з текстом / звичайним текстом mime
Я знайшов base.html в адміністративних шаблонах і видалив
type="text/css"
і тепер рядки виглядають так:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
Це вирішило проблему для мене.
Якщо випуск знаходиться на сервері 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
Налаштування статичних файлів
Переконайтеся, що django.contrib.staticfiles
він включений у ваш INSTALLED_APPS .
У вашому файлі settings.py визначте STATIC_URL, наприклад:
STATIC_URL = '/static/'
для отримання додаткової інформації про статичні файли