2008-11-04 6 views
107

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

NB: На локальной машине

ответ

48

Если вы используете сервер разработки следовать django project's how-to guide for managing static files настроить ваш URL, а затем ссылаться на вас медиа-файлы в шаблоне - скажем, изображение внутри папки изображения из /site_media/images/foo.gif.

+24

Просто обратите внимание на эти документы Django - убедитесь, что вы выбрали документы для используемой версии Django. Вещи, похоже, сильно изменились между версиями в отношении статических файлов. –

+3

@ У Сама есть отличная точка. я не мог найти статические файлы для жизни меня. затем, измените версию django, и вуаля. это было буквально все, что я должен был сделать, потому что, по-видимому, я смотрел документы для неправильной версии. –

12

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

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

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

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

+2

Hi, Oli. Я знаю, что этот пост близок к 3 годам, но разве это лучший способ связать css с шаблонами django? Кажется, это было бы проще всего связать css с URL-адресом abs, таким как static.example.com, и просто сохранить все статические файлы на этом URL-адресе. – cp3

36

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

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

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

  • Использование этого сервера является неэффективным и небезопасным.
  • Не используйте это в настройках производства.
  • Используйте это только для разработки.
+0

«Не используйте это в настройках производства». Не возражаете ли вы расширить это? – Chris

+0

@ Крис: Вы правы, утверждение было немного неоднозначным. Я имел в виду сервер разработки Django. Хотя я запустил его несколько раз на нашем производственном сайте, это было только на короткие промежутки времени при отладке гнусных проблем. –

+0

Спасибо за разъяснение, я смотрел на мои развертывания django, работающие на apache, задаваясь вопросом, что я сделал неправильно. :) – Chris

0

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

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

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

8

Официальные документы django не помогли мне. Надеюсь, что сообщение в блоге «Django: How to serve static files» поможет некоторым из вас.

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_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 ('\\', '/')' не нужно. – mak