在另一个模板中显示Django视图中的HTML表

时间:2014-12-16 19:20:09

标签: python html django pandas

所以我有一个Django视图,允许用户上传一个文件,其中包含要通过Pandas数据帧绘制的数据。然后在单独的视图中创建图形,该视图通过图像标记在原始文件上载视图中引用。这非常有效。

现在我还希望在图表图像旁边以表格格式显示数据。我使用Panda内置dataframe.to_html()在单独的视图中创建表格,该视图也将在文件上传视图中引用。

我正确生成了表,可以在为表指定的URL中看到。当我尝试从文件上传模板中引用该URL时,我遇到了错误。

错误是:

Resource interpreted as Image but transferred with MIME type text/html

我发现这是因为我的文件上传模板有这一行:

<img src="{% url 'html_graph' %}" />

因为视图返回HttpResponse content_type text/html

有没有办法从我的文件上传模板中引用那个不使用图片代码的HTML表格视图,因为该表格是HTML而不是图片?

解决方案

这是我的工作实施:

html_table = df.to_html(index=False)
return render_to_response('myapp/my_template.html', {'html_table': html_table}, RequestContext(request))

然后我在模板中引用html_table,如:

<div>
 {{ html_graph | safe }}
</div>

1 个答案:

答案 0 :(得分:1)

要解决此问题,您可以执行以下操作之一:

  1. 以这种方式使用<pre>标记所有转义的字符(如&lt; &gt;等)都将呈现,因为它可以完成:
  2. <pre> {{ html_table }} </pre>

    1. 使用django内置的autoescape过滤器可以完成:
    2. {% autoescape off %} {{ html_table }} {% endautoescape %}

      第二种选择更好,因为它是由django给出的,只有开发者才有权使用它。