Reputation: 2930
I am new to django. I tried to load an image through HTML(graph.html). views.py includes
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 includes
<div>
<img src="{% 'views.avg_duration_vs_time_of_day.image_data' %} " />
</div>
But image cannot load in the browser and the error is
TemplateSyntaxError at /graph/
Invalid block tag: ''views.avg_duration_vs_time_of_day.image_data''
What is the solution ?
Upvotes: 4
Views: 1048
Reputation: 474221
You should put image path in a template context, instead of image itself:
context = { 'image_path': path }
return render_to_response('welcome/graph.html', context)
And, your template syntax is incorrect:
<div>
<img src="{{ image_path }}"/>
</div>
Hope your settings are configured properly. FYI, see:
Hope that helps.
Upvotes: 2