css - Django 不在 css 中显示图像

标签 css django

我有一个 Django 应用程序。我在 css 中添加了图像(url),它没有显示图像。

但是当我将它用作 html 文件时,它正在显示图像。我应该为此在 settings.py 中设置任何 url 吗?来源[此处显示][1]。 [1]: http://dpaste.com/164620/

最佳答案

那绝对是本地路径。您需要一个相对于文档根目录的路径(默认情况下,Django 不提供媒体文件,不鼓励让它在测试环境之外提供服务)或绝对 URL,如果文件位于不同的(子)域(例如,提供媒体文件的本地 Apache 虚拟主机)。

如果您使用的是相对路径,请注意该路径将相对于提及该路径的页面(即,如果您将它放在一个 CSS 文件中,它将相对于该 CSS 文件;如果您将它在模板中,它将相对于使用该模板显示的任何页面)。

如果您使用绝对路径,请注意该路径将相对于该(子)域的文档根目录。

编辑:不,真的。这是路径。您的浏览器将解析 CSS 或 HTML 中的路径。因此,即使您在本地主机上运行该程序,绝对路径(以 / 开头)也将被解析为相对于文档根目录(即交给 Django 的 URL 解析)。

如果您的站点在 http://localhost:8000 上运行,/home/logic/quote/template/hummingbirds.gif 将被视为 http://localhost:8000/home/logic/quote/template/hummingbirds.gif,即您的浏览器将向运行在 localhost 的服务器发出 HTTP GET 请求:8000 用于路径 /home/logic/quote/template/hummingbirds.gif。如果服务器是 Django,它将尝试在您的 urls.py 中找到匹配 /home/logic/quote/template/hummingbirds.gif 的规则。您不能仅通过传递本地路径来引用文件系统中的文件。

如果您想使用 Django 提供静态文件(例如图像)(即在 Django 运行的相同域和端口上),您需要先将其配置为提供这些文件,如下所示:http://docs.djangoproject.com/en/dev/howto/static-files/

如果你想引用你的文件系统上的一个文件(糟糕的做法,如果东西上线就需要替换),你需要明确地使用 file:// 协议(protocol)。绝对 URL(即没有协议(protocol)前缀和域名)将始终被视为相对于当前协议(protocol)和域。

关于css - Django 不在 css 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333392/

相关文章:

html - HTML 中的自定义谷歌字体错误

javascript - jQuery 在 CSS 中重新定位之前查找元素位置

javascript - jquery动画。边界问题

django - 如果第二个表中存在过滤行,则注释 django 查询

css - 媒体查询覆盖

css - 如何在 Bootstrap 中的一组行的末尾添加一长列?

python - 虚拟环境错误 : the executable in env/bin/python is not functioning

django-debug-toolbar 不会从生产服务器显示

python - Django Rest框架序列化器: required_fields

Django 插入 AdSense 代码?