Django:css引用静态文件中的媒体(django dev/1.3 /静态文件)

13 html css python django django-1.3

像django用户的任何其他用户一样,我提供静态文件.我选择使用django-staticfiles为django 1.3做好准备,它基本上将它集成到核心中.

我的问题非常简单 - 这非常适合将多个媒体源整合在一起并在django模板中以统一的方式引用它们.但是,我经常在Css中使用图像背景,如下所示:

#itemname { background-image: url('/path/to/image.png'); }
Run Code Online (Sandbox Code Playgroud)

我的问题很简单 - 如果我使用绝对名称,我必须对它们进行硬编码.如果我使用相对名称,移动到"子目录"URL会弄乱这些项目的资源位置,并且无法加载它们.

那么,我该如何将此解决方案扩展到CSS?所述解决方案必须避免

  • 在html中嵌入css.我个人避免这个.
  • 使用硬编码的网址.这不能很好地工作,因为在我的本地设置中,我通常使用'localhost/project'和apache进行测试(mod_wsgi),而我倾向于project.com用于部署.

想法?

Joh*_*ebs 19

你说你有相对路径的问题,但我不明白你的意思.

我遇到了同样的问题,我用相对路径来解决它.唯一要记住的是,部署图像时(显然)需要保持相对于CSS文件的相同路径.

我的设置简而言之:

注意我仍在使用Django 1.2的django-staticfiles,但它应该与Django 1.3类似

STATIC_URL = "/site_media/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, "site_media", "static")
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, "static_media"),
)
Run Code Online (Sandbox Code Playgroud)

然后我提供{{ STATIC_URL }}css/style.css参考图像的CSS ../images/logo.png.

我的项目看起来像这样:

project_dir
  ...
  stuff
  static_media
    ...
    css
    images
Run Code Online (Sandbox Code Playgroud)

如果您有任何问题,请告诉我,我会澄清一下.