Django项目与CSS嵌入图像

时间:2014-05-20 17:33:20

标签: python css django

我创建了一个Django项目,它将被构建到各种环境中:Dev,Test,Prod等。我有很多CSS文件,其中一些有嵌入的图像。例如:

.logo {
   background-image: url(http://{server:port}/static/logo.png);
   height: 58px;
   width: 239px;
}

对于每个环境,可能有一个不同的服务器和端口将提供静态内容。

允许CSS文件考虑各种环境的最有效方法(以及Django的最佳实践)是什么?

2 个答案:

答案 0 :(得分:0)

哈桑

Django的最佳实践是将服务器端口传递给图像作为" context"并根据它调用图像。

这是一个简单的 views.py

def image_view(request, server_port):
  return render(request, 'image_page.html', {'server_port': server_port})

<强> urls.py

urlpatterns = patterns('',
  url(r'image_view/(?P<server_port>\d+)/$', views.image_view, name='image_view'),
  )

然后在 image_page.html

<body>
  <img src="{{ STATIC_URL }}{{ server_port }}logo.png" alt="" />
</body>

网址访问此视图/ html页面:

<a href="{% url 'image_view' 'server_port' %}">Link</a>

您无法使用Django将上下文变量传递给.css文件。不是我知道的。希望有所帮助。请务必在STATIC_URL中配置settings.py以使其生效。您的 server_port 还需要匹配存储图像的目录,以便Django使用文件路径查找图像。

答案 1 :(得分:0)

在一天结束时,我决定在我的所有CSS文件中使用“Production”服务器/端口。然后在生产之前的每一层,只需更新主机文件,将Prod服务器/端口指向静态内容到适当的IP地址。