2015-12-29 62 views
0

我一直在麻烦搞清楚如何用我的django应用程序提供静态图像。然而,我已经想出了一种“黑客”来实现它的功能,但它不允许有太大的灵活性。在django应用程序上提供静态图像?

HTML文件我曾尝试以下...

<img src="{{ STATIC_URL }}textchange/nextarrow.png" class="foobar" id="foobar"> 

上图:页面将加载时,我用这个,但图像将无法正常工作。

<img src="{% static "textchange/nextarrow.png" %}" class="foobar" id="foobar“>

上图:页面将不会加载,我得到了一个服务器错误

<img src="thefullurltoS3bucket/nextarrow.png" class="foobar" id="foobar"> 

上图:图像将加载罚款

我一直在努力所有这些不同的格式,当用Heroku和S3制作时,我的问题是我为我的静态图像提供正确的方式吗?我使用la在这个例子中,我使src成为s3中的完整url。那很好吗?

应该指出,当我使用静态标签服务的CSS文件工作正常。图像是唯一的问题。

回答

0

您的第一个和第二个解决方案(即你有服务器错误,而不是加载)是使用静态文件的正确方法是:

<img src="{% static "textchange/nextarrow.png" %}" class="foobar" id="foobar"> 

审核您settings.py文件,并设置STATIC_URLSTATIC_DIRSSTATIC_ROOT,如果你有服务器错误,也许你设置了STATIC_URLSTATIC_DIRS错误。你可以找到很多关于这些设置的文章。

另请检查您的图像网址在浏览器(如127.0.0.1:8000/static/files/etc.jpg)看看你是否可以访问图像。

0

在Django中提供静态文件可能会很痛苦。

首先,确保你正确使用静态模板标签在你的模板:

{% load static from staticfiles %} 

<img src="{% static 'path/to/image.jpg' %}"> 

在你的设置,让您的STATIC_URL点像“/静态/”,你STATIC_ROOT点所在的目录实际上,您将在收集静态文件之后提供文件,并将您的静态文件放置在您的项目(即“静态”目录)中的STATIC_DIRS

如果您是来自S3的服务,您可能会follow a tutorial like this one

相关问题