无法在 django 中加载图像
Posted
技术标签:
【中文标题】无法在 django 中加载图像【英文标题】:Cannot load image in django 【发布时间】:2013-07-01 03:26:53 【问题描述】:我是 django 的新手。我试图通过 html(graph.html) 加载图像。 views.py 包含
def avg_duration_vs_time_of_day(request):
figName="figGraph.png"
path="Telecom/Images/"+figName
day = [1, 2, 3, 4]
query = "select time_of_day,avg(duration) from fact_table group by time_of_day"
avg_call_day = connect(query)
import matplotlib.pyplot as plt
plt.figure(figsize = (4,4))
plt.xlabel("Time of Day",fontdict='fontsize':8)
plt.ylabel("Average Call Duration in seconds",fontdict='fontsize':8)
plt.title("Average Call Versus Time of Day",fontdict = 'fontsize':8)
plt.plot(day,avg_call_day,color='green', linestyle='solid',linewidth=1, marker='o',markerfacecolor='blue', markersize=0)
plt.bar(day,avg_call_day,width=0.2,align='center')
plt.savefig(path)
image_data = open(path, "rb").read()
context = 'image_data': image_data
return render_to_response('welcome/graph.html', context)
graph.html 包含
<div>
<img src="% 'views.avg_duration_vs_time_of_day.image_data' % " />
</div>
但是图片无法在浏览器中加载,错误是
TemplateSyntaxError at /graph/
Invalid block tag: ''views.avg_duration_vs_time_of_day.image_data''
解决办法是什么?
【问题讨论】:
【参考方案1】:您应该将图像路径放在模板上下文中,而不是图像本身:
context = 'image_path': path
return render_to_response('welcome/graph.html', context)
而且,您的模板语法不正确:
<div>
<img src=" image_path "/>
</div>
希望您的设置配置正确。仅供参考,请参阅:
How do I include image files in Django templates? https://docs.djangoproject.com/en/dev/howto/static-files/希望对您有所帮助。
【讨论】:
我已将 settings.py 更改为 MEDIA_ROOT = os.path.join(PROJECT_DIR, 'Images/media') MEDIA_URL = 'localhost:8000/media/admin' 但它无法正常工作 我已保存该图像在我的项目文件夹中的图像目录中 然后,将图片保存在MEDIA_ROOT
中。
我不明白你的意思?
我更改了 MEDIA_ROOT = os.path.join(PROJECT_DIR, 'Images') 但仍然无法正常工作
试试MEDIA_ROOT = '/path_on_you_server/images/'
和MEDIA_URL = '/images/'
。之后您必须将图像保存到文件夹'/path_on_you_server/images/'
以上是关于无法在 django 中加载图像的主要内容,如果未能解决你的问题,请参考以下文章