Як я можу використовувати CSS у Django?


110

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

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

Відповіді:


48

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


25
Лише коротка примітка про ці документи Django - переконайтеся, що ви обрали документи для тієї версії, яку ви використовуєте. Здається, речі змінилися між версіями щодо статичних файлів.
Сем Старлінг

3
@Sam має чудовий момент. Я не міг розібратися у статичних файлах за життя мене. потім змініть встановлену версію django та voila. це було буквально все, що я повинен був зробити, тому що, мабуть, я дивився на документи для неправильної версії.
Джош Браун

36

Загалом сказано, ви запитуєте, як подати статичний файл від Django. Якщо ви працюєте під Apache, вам слід прочитати http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

Якщо ви працюєте на сервері розробки (скажімо, на своєму ноутбуку), прочитайте http://docs.djangoproject.com/en/dev/howto/static-files/

Зверніть увагу на великий, жирний застереження щодо сервера розробки Django:

  • Використання цього сервера неефективно та небезпечно.
  • Не використовуйте це у виробничих умовах.
  • Використовуйте це лише для розвитку.

"Не використовуйте це у виробничих умовах." Ви проти цього розширитись?
Кріс

@Chris: Ти маєш рацію, твердження було дещо неоднозначним. Я мав на увазі сервер розвитку Django. Хоча я декілька разів запускав це на нашому виробничому майданчику, це було лише на короткий проміжок часу, під час налагодження гнучких проблем.
Пітер Роуелл

Дякую за роз’яснення, я дивився на мої розгортання джанго, що працюють на апачі, цікаво, що я зробив не так. :)
Кріс

1
Приємно. Мені подобається, що 3 пункти по-різному говорять одне і те ж. Дякую за попередження
KobeJohn

13
Я абсолютно люблю людей, які приїжджають через 4,5 роки після опублікування відповіді та її голосування. Цікаво , якщо вони навіть знали , що Django був в 11/08 ... напевно , немає. Це не точки респ , що дістатися до мене, це відображається комбінація невігластва і зарозумілості всього лише натяк бути waaay пізно до партії. Цікаво, як вони оцінюють мої повідомлення на comp.lang.c у, о, скажімо, 1987 році? Краще не питати.
Пітер Роуелл

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 у папці під назвою "медіа", яка була на найвищому рівні мого проекту 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('\\','/')є непотрібним.
мак

12

Які налаштування мені потрібно зробити, щоб Django бачив файл css?

Жоден.

Переконайтеся, що ваш шаблон містить файл CSS (як це робить стандартний HTML) та розмістіть файл CSS на медіа-сервері.

Для уточнення: з Django дуже рекомендується обслуговувати всі свої медіа (усе, що не є динамічним html), з іншого екземпляра сервера. Як ви реалізуєте це, повністю залежить від вас, але більшість людей створюють субдомен.


2
Привіт, Олі. Я знаю, що цій посаді близько 3 років, але це все-таки найкращий спосіб пов’язати css з шаблонами джанго? Це здається, що було б найпростіше просто зв’язати css з абс-адресою URL, наприклад static.example.com, і просто зберегти всі статичні файли в цьому URL-адресі.
cp3


0

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

Але це трохи схоже на ajax, я не знайшов нічого, що б сказало, як його включити стандартним способом.

Існує модуль css-компресор для django, якщо ви хочете оптимізувати його розміри.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.