我创建了一个Django项目,它将被构建到各种环境中:Dev,Test,Prod等。我有很多CSS文件,其中一些有嵌入的图像。例如:
.logo {
background-image: url(http://{server:port}/static/logo.png);
height: 58px;
width: 239px;
}
对于每个环境,可能有一个不同的服务器和端口将提供静态内容。
允许CSS文件考虑各种环境的最有效方法(以及Django的最佳实践)是什么?
答案 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地址。