我正在尝试生成图表,但无法查看嵌入在 html 文件中的图片。
。这是我的 View 文件:
def report(request):
if request.POST:
form = ArticleForm(request.POST, request.FILES)
if form.is_valid():
course = form.cleaned_data['course']
course1 = str(json.dumps(list(course)))
t = course1
course_selected = ((t.replace('"',"")).replace('[',"")).replace(']',"")
values = Article.objects.filter(body=course_selected).values_list('likes')
v1=str(values)
v2=v1.replace('(',"").replace(')',"").replace(',,',"").replace(',',"").replace('[',"").replace(']',"")
num1=map(int,v2.split(" "))
fig=Figure()
ax=fig.add_subplot(111)
x=[1,2,3]
y=num1
ax.plot(x,y)
canvas=FigureCanvas(fig)
response= HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
else:
form = ArticleForm()
args = {}
args.update(csrf(request))
args['form'] = form
return render_to_response('report.html', args)
def report_graph(request):
name = 'Mike'
return render_to_response('report_graph.html',{'name':name})
这是我的 html 文件。第一个是生成表单时: {% 扩展“base.html”%}
{% block sidebarinfo %}
<div style="text-align: center;">
<h2> Course Selection</h2>
<form action = "/articles/report/" method = "post" enctype="multipart/form-data"> {% csrf_token %}
<ul>
{{form.as_ul}}
</ul>
<input type="submit" name="submit" value="Generate Report" />
{% endblock %}
第二个是我想查看嵌入图表的位置
{% extends "base.html"%}
{% block sidebarinfo %}
<div style="text-align: center;">
<img src = "/articles/report/report.png" />
</div>
{% endblock %}
如果您想查看,这是我的 url 文件:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('',
url(r'^all/$','article.views.articles'),
url(r'^get/(?P<article_id>\d+)/$', 'article.views.article'),
url(r'^language/(?P<language>[a-z\-]+)/$', 'article.views.language'),
url(r'^create/$', 'article.views.create'),
url(r'^like/(?P<article_id>\d+)/$', 'article.views.like_article'),
url(r'^search/$', 'article.views.search_titles'),
url(r'^report/report.png','article.views.report'),
url(r'^report/$','article.views.report_graph'),
)
我面临的问题是,我的 html 中没有显示图像。我知道正在生成图表,因为如果我将表单设置为直接转到图表图像,它就可以工作。然而,当我尝试将该源代码嵌入到我的 html 脚本中时,什么也没有出现。我希望这是有道理的。如果有更好的方法来嵌入图表,我愿意这样做
最佳答案
加载 html 时,浏览器将根据您在 src
属性中提供的 url 对图像执行 GET
请求。
在您当前的 View 中,您已将图形代码放置在发布请求下。
def report(request):
if request.POST: ##<<---- the request is not post therefore your image will not load
form = ArticleForm(request.POST, request.FILES)
if form.is_valid():
course = form.cleaned_data['course']
course1 = str(json.dumps(list(course)))
t = course1
course_selected = ((t.replace('"',"")).replace('[',"")).replace(']',"")
values = Article.objects.filter(body=course_selected).values_list('likes')
v1=str(values)
v2=v1.replace('(',"").replace(')',"").replace(',,',"").replace(',',"").replace('[',"").replace(']',"")
num1=map(int,v2.split(" "))
fig=Figure()
ax=fig.add_subplot(111)
x=[1,2,3]
y=num1
ax.plot(x,y)
canvas=FigureCanvas(fig)
response= HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
else:
form = ArticleForm()
有几种解决方案可以解决您的问题。
一是为其编写一个不同的 View 。但由于您需要 post 请求中的信息,我建议您
- 绘制图像并将其保存到媒体目录中,然后从那里加载图像。
- 将数据保存在帖 subview 中,并编写第二个 View /或 if
request.get
以返回图表。 - 否则,学习一个 javascript 图形库,d3 和 c3 是很好的起点,让 django 返回值。
如果您需要更多帮助或更多详细信息,请告诉我。
干杯, 生物鸟人
关于python - 图表未显示在我的 html-Django 中(在 html 中嵌入动态图表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27535954/