为什么背景:CSS中的url不能与Django一起使用?

时间:2011-11-05 21:05:35

标签: css django url background

我的导航栏有以下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 个答案:

答案 0 :(得分:3)

"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

    • 将此添加到您的导入:导入设置
    • 将此添加到网址模式:

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

    注意:在此示例中,我的静态文件夹中有名为css,jquery,jscripts和images的文件夹。

  5. 在您的模板中添加:

  6. 用于css文件:(在本例中,default.css是css文件的名称)

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

    for 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 :(得分:1)

尝试在设置中将MEDIA_ROOT设置为图片所在的位置,然后使用

{{ MEDIA_URL }}nav_background.gif

编辑:

JakubGocławski是对的。您的问题似乎是图像不存在于您认为存在的位置。如果您仍然遇到问题,请告诉我们您访问localhost时获得的内容:8000 /&lt; <图像的路径>