Как использовать CSS в Django?

102

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

Примечание: на локальном компьютере

Теги:
django-forms

6 ответов

46
Лучший ответ

Если вы используете сервер разработки, выполните руководство по проекту django для управления статическими файлами, чтобы настроить URL-адрес, затем ссылку файлы мультимедиа в шаблоне - скажем, изображение внутри папки с изображениями из /site_media/images/foo.gif.

  • 24
    Просто краткая заметка об этих документах Django - убедитесь, что вы выбрали документы для версии Django, которую вы используете. Вещи, кажется, сильно изменились между версиями относительно статических файлов.
  • 3
    @ Сэм имеет большое значение. я не мог понять статичные файлы для жизни меня. затем измените установленную версию django и вуаля. это было буквально все, что я должен был сделать, потому что, очевидно, я искал документы для неправильной версии.
35

В более общем плане вы спрашиваете, как обслуживать статический файл из Django. Если вы работаете под Apache, вы должны прочитать http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

Если вы используете сервер разработки (скажем, на вашем ноутбуке), прочитайте http://docs.djangoproject.com/en/dev/howto/static-files/

Обратите внимание на большой отказ от жира в отношении сервера разработки Django:

  • Использование этого сервера неэффективно и небезопасно.
  • Не используйте это в настройках производства.
  • Используйте это только для разработки.
  • 0
    «Не используйте это в производственных условиях». Вы не против расширить это?
  • 0
    @ Крис: Вы правы, заявление было немного двусмысленным. Я имел в виду сервер разработки Django. Хотя я запускал его несколько раз на нашей производственной площадке, это было только в течение коротких периодов времени при устранении грубых проблем.
Показать ещё 3 комментария
13

Это вызвало у меня проблемы слишком долго (404 не найденных ошибок). Недостатком для меня было редактирование кортежа 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" />
  • 0
    Наконец, ясное, простое и элегантное решение. Прекрасно работает с django 1.5.
  • 0
    # Всегда используйте косую черту, даже в Windows. .replace('\\','/') не требуется.
12

Какие настройки мне нужно сделать, чтобы Django просматривал файл css?

Отсутствует.

Убедитесь, что ваш шаблон содержит файл CSS (как это делает стандартный HTML) и помещает файл CSS на медиа-сервер.

Чтобы уточнить: с помощью Django настоятельно рекомендуется обслуживать все ваши медиа (все, что не является динамическим html), с другого экземпляра сервера. Как вы реализуете это полностью зависит от вас, но большинство людей создают субдомен.

  • 2
    Привет, Оли. Я знаю, что этому посту около 3 лет, но все же это лучший способ связать css с шаблонами django? Кажется, что было бы проще всего связать css с abs URL, например static.example.com, и просто сохранить все статические файлы по этому URL.
8

Официальные django docs не помогли мне. Надеюсь на сообщение в блоге " Django: как обслуживать статические файлы" помогает некоторым из вас.

0

Ну, самый простой способ использовать css с django - добавить его к вашим шаблонам в виде статических файлов.

Но это немного похоже на ajax, я не нашел ничего, что говорит о том, как включить его стандартным способом.

Существует модуль css-compressor для django, если вы хотите оптимизировать его размер.

Сообщество Overcoder
Наверх
Меню