python - 图表未显示在我的 html-Django 中(在 html 中嵌入动态图表)

标签 python html django django-forms django-views

我正在尝试生成图表,但无法查看嵌入在 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 请求中的信息,我建议您

  1. 绘制图像并将其保存到媒体目录中,然后从那里加载图像。
  2. 将数据保存在帖 subview 中,并编写第二个 View /或 if request.get 以返回图表。
  3. 否则,学习一个 javascript 图形库,d3 和 c3 是很好的起点,让 django 返回值。

如果您需要更多帮助或更多详细信息,请告诉我。

干杯, 生物鸟人

关于python - 图表未显示在我的 html-Django 中(在 html 中嵌入动态图表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27535954/

相关文章:

html - 对象在同一条线上而不丢失位置?

django测试客户端总是返回301

python - drawContours 无法在 OpenCV 3.1.0 中创建正确的蒙版

python - 如何在 Python 中实现以下 C 代码? (typedef、枚举和开关)

python - 我们如何根据订阅的主题消息的变化动态改变Tkinter标签小部件中的文本?

jquery - 部分标题在固定菜单栏下

html - CSS 对齐 Logo 与文本高度相同

python - 使用requirements.txt将可编辑工作目录pip安装到自定义路径

python - Django 分页对象与 Postgresql QuerySets 有问题

python - Django 查询,按用户组过滤