我一直在努力弄清楚如何使用我的django应用程序提供静态图像。但是,我已经找到了一种让它运行起来的“黑客”,但它没有太大的灵活性。
在 html文件中,我尝试了以下内容......
<img src="{{ STATIC_URL }}textchange/nextarrow.png" class="foobar" id="foobar">
上方:我使用此页面时会加载页面,但图片无效。
<img src="{% static "textchange/nextarrow.png" %}" class="foobar" id="foobar
“&GT;
上方:页面无法加载,我收到服务器错误
<img src="thefullurltoS3bucket/nextarrow.png" class="foobar" id="foobar">
上方:图片将正常加载
在使用Heroku和S3进行制作时,我一直在尝试所有这些不同的格式。我的问题是我正在为静态图像提供正确的方式吗?我使用最后一个例子,我在s3中将src作为桶的完整URL。那没关系吗?
应该注意的是,当我使用静态标签服务css文件时工作正常。图像是唯一的问题。
答案 0 :(得分:0)
您的第一个和第二个解决方案(您遇到服务器错误而未加载)是使用静态文件的正确方法:
<img src="{% static "textchange/nextarrow.png" %}" class="foobar" id="foobar">
审核您的settings.py
文件并设置STATIC_URL
和STATIC_DIRS
以及STATIC_ROOT
,如果您遇到服务器错误,可能需要设置STATIC_URL
或{{1错了。你可以找到很多关于这些设置的帖子。
同时在浏览器中检查您的图片网址(如STATIC_DIRS
},看看您是否可以访问该图片。
答案 1 :(得分:0)
在Django中提供静态文件可能很痛苦。
首先,请确保在模板中正确使用静态模板标记:
{% load static from staticfiles %}
<img src="{% static 'path/to/image.jpg' %}">
在您的设置中,让您的STATIC_URL
指向&#39; / static /&#39;,STATIC_ROOT
指向您实际为文件提供服务的目录post-collectstatic,以及STATIC_DIRS
您将静态文件放置在项目中的位置(即&#39;静态目录)。
如果你从S3服务,你可能会follow a tutorial like this one。