2013-07-03 4 views
4

Я новичок в django. Я попытался загрузить изображение через HTML (graph.html). views.py включаетНевозможно загрузить изображение в django

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'' 

Что такое решение?

ответ

2

Вы должны поместить путь изображения в контексте шаблона, а само изображение:

context = { 'image_path': path }  
return render_to_response('welcome/graph.html', context) 

И ваш синтаксис шаблона неправилен:

<div> 
<img src="{{ image_path }}"/> 
</div> 

Надежда ваши параметры настроены правильно. FYI, см:

Надежда, что помогает.

+0

Я изменил свои settings.py как MEDIA_ROOT = os.path.join (PROJECT_DIR, 'Images/media') MEDIA_URL = 'http: // localhost: 8000/media/admin /', но он не работает должным образом. I сохранили это изображение в папке «Картинки» внутри моей папки проекта. –

+0

Затем сохраните изображение внутри 'MEDIA_ROOT'. – alecxe

+0

Я не понимаю, что вы имеете в виду? –

Смежные вопросы