Я создаю свое приложение с помощью Django, и мне интересно, как я могу заставить Django использовать мой файл CSS? Какие настройки мне нужно сделать, чтобы Django увидел файл css?
NB: на локальной машине






What settings do i need to do to make Django see the css file?
Никто.
Убедитесь, что ваш шаблон включает файл CSS (как это делает стандартный HTML), и поместите файл CSS на медиа-сервер.
Чтобы уточнить: с помощью Django настоятельно рекомендуется обслуживать все ваши медиа (все, что не является динамическим HTML) с другого экземпляра сервера. Как вы это реализуете, полностью зависит от вас, но большинство людей создают поддомен.
В более общем плане вы спрашиваете, как обслуживать статический файл из Django. Если вы работаете под Apache, вам следует прочитать http://docs.djangoproject.com/en/dev/howto/deployment/modpython/
Если вы используете сервер разработки (скажем, на своем ноутбуке), прочтите http://docs.djangoproject.com/en/dev/howto/static-files/
Обратите внимание на большой, жирный отказ от ответственности относительно сервера разработки Django:
«Не используйте это в производственных условиях». Не могли бы вы подробнее остановиться на этом?
@Chris: Вы правы, утверждение было немного двусмысленным. Я имел в виду сервер разработки Django. Хотя я запускал его несколько раз на нашем производственном сайте, это было только в течение коротких периодов времени при отладке грубых проблем.
Спасибо за разъяснения, я смотрел на свои развертывания django, работающие на apache, задаваясь вопросом, что я сделал не так. :)
Хороший. Мне нравится, что 3 пункта говорят об одном и том же по-разному. Спасибо за предупреждение.
Мне очень нравятся люди, которые приходят через 4,5 года после того, как был опубликован ответ, и голосуют против. Интересно, знали ли они вообще, что такое Django был в 11/08 ... наверное, нет. Меня поражают не очки репутации, а проявленное сочетание невежества и высокомерия с намеком на то, что вааай опаздывает на вечеринку. Интересно, как бы они оценили мои сообщения на comp.lang.c, скажем так, в 1987 году? Лучше не спрашивать.
Если вы используете сервер разработки, следуйте Руководство проекта django по управлению статическими файлами для настройки своего URL-адреса, а затем ссылайтесь на медиафайлы в шаблоне - скажем, на изображение внутри папки изображений с /site_media/images/foo.gif.
Небольшое примечание об этих документах Django - убедитесь, что вы выбрали документы для той версии Django, которую вы используете. Похоже, что между версиями многое изменилось в отношении статических файлов.
@Sam имеет большое значение. Я всю жизнь не мог разобраться в статических файлах. затем измените установленную версию django и вуаля. это было буквально все, что мне нужно было сделать, потому что, очевидно, я искал документы для неправильной версии.
Ну, самый простой способ использовать css с django - добавить его в свои шаблоны как статические файлы.
Но это немного похоже на ajax, я не нашел ничего, что подсказывало бы, как его включить стандартным способом.
Для django есть модуль css-компрессор, если вы хотите оптимизировать его размер.
Официальные документы django мне не помогли. Надеюсь, сообщение в блоге «Django: как обслуживать статические файлы» поможет некоторым из вас.
Это тоже вызывало у меня проблемы некоторое время (404 ошибки not found). Мне не хватало места в том, чтобы отредактировать кортеж STATICFILES_DIRS в settings.py, чтобы я получил следующее:
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(os.path.dirname(__file__),'media').replace('\\','/'),
)
Затем он взял мои файлы CSS в папке с именем «media», которая находилась на верхнем уровне моего проекта django.
Еще у меня было:
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/media/'
(убедитесь, что у вас есть ведущий / выше в STATIC_URL)
Конечно, как сказано выше, вам необходимо, чтобы файл CSS был правильно включен из ваших файлов html. Я имел:
<link href = "{{ STATIC_URL }}css/ea_base.css" rel = "stylesheet" type = "text/css" media = "screen" />
Наконец, ясное, простое и элегантное решение. Прекрасно работает с django 1.5.
# Всегда используйте косую черту, даже в Windows. .replace('\\','/') не нужен.
Привет, Оли. Я знаю, что этому посту почти 3 года, но является ли это лучшим способом связать css с шаблонами django? Похоже, что было бы проще всего просто связать css с URL-адресом abs, например static.example.com, и просто хранить все статические файлы по этому URL-адресу.