Почему background: url в CSS не работает с Django? - PullRequest
0 голосов
/ 06 ноября 2011

У меня есть следующий код CSS для моей панели навигации:

#footer-navigation {
  background: #1841c8 url('../images/nav_background.gif');
  height: 40px;
  padding: 0 0 0 20px;
}

Однако, когда я запускаю свой локальный сервер разработки, он дает мне следующее, даже если изображение находится в этом месте:

"GET /images/nav_background.gif HTTP/1.1" 404 1795

Я использую Django 1.3.1 и использую django.views.static.serve.

Ответы [ 2 ]

3 голосов
/ 13 января 2012
"GET /images/nav_background.gif HTTP/1.1" 404 1795

Изображение, которое вы хотите использовать, не найдено. Я предлагаю вам выполнить следующие действия:

Вы можете попробовать эти шаги:

  1. откройте ваши settings.py и

    • добавьте это в первую строку вашего файла:

      import os.path
      
    • измените значение STATIC_ROOT на:

      STATIC_ROOT = os.path.join(PROJECT_DIR, 'static/')
      
    • изменить значение STATIC_URL на:

      STATIC_URL = '/static/'
      
  2. создайте папку с именем "static" в корневом каталоге вашего проекта.

  3. создайте папку для ваших статических файлов, таких как css, javascript и т. Д. Я рекомендую использовать другую папку для разных типов файлов.
  4. откройте urls.py вашего проекта

    • добавить это в свой импорт: настройки импорта
    • добавить это к шаблонам URL:

      (r'(?:.*?/)?(?P<path>(css|jquery|jscripts|images)/.+)$', 'django.views.static.serve', {'document_root': settings.STATIC_ROOT }),
      

    ПРИМЕЧАНИЕ. В этом примере внутри моей статической папки находятся папки css, jquery, jscripts и images.

  5. В вашем шаблоне добавьте это:

для файлов css: (в данном примере default.css - это имя файла css)

<link href="/{{ STATIC_ROOT }}css/default.css" rel="stylesheet" type="text/css" media="all" />

для JavaScript:

<script type="text/javascript" src="/{{ STATIC_ROOT }}jquery/jquery.js"></script>

затем измените свой код на:

#footer-navigation {
background: #1841c8 url(images/nav_background.gif);
height: 40px;
padding: 0 0 0 20px;
                   }
1 голос
/ 06 ноября 2011

попробуйте установить MEDIA_ROOT в ваших настройках, где изображение находится, а затем используйте

{{ MEDIA_URL }}nav_background.gif

РЕДАКТИРОВАТЬ:

Якуб Гоцлавски правМожет показаться, что ваша проблема в том, что изображение не существует там, где вы думаете, что оно существует.Если проблема не устранена, сообщите нам, что вы получите при посещении localhost: 8000 / <путь к изображению>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...