在另一个模板中显示来自 Django 视图的 HTML 表
Posted
技术标签:
【中文标题】在另一个模板中显示来自 Django 视图的 HTML 表【英文标题】:Displaying an HTML table from a Django view in another template 【发布时间】:2015-02-15 05:08:59 【问题描述】:所以我有一个 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>
编辑
模板代码中的更正:
<div>
html_table | safe
</div>
【问题讨论】:
这绝对有效,但我希望可能有更优雅的解决方案。 我最终弄明白了。感谢@Filly 的建议。 嗨,那么你如何在 django 模板中准确地使用 to_html 方法呢?当我尝试将我的 to_html 变量放在模板中的 variable 中时,它只会在我打开页面时向我显示 html 字符串。 @KidSudi 查看我对问题所做的编辑。希望对您有所帮助。 效果惊人!谢谢! 【参考方案1】:要解决它,您可以执行下列操作之一:
-
以这种方式使用
<pre>
标签,所有转义字符如&lt; &gt;
等都将按原样呈现:
<pre>
html_table
</pre>
-
使用 django 内置的
autoescape
过滤器可以如下完成:
% autoescape off %
html_table
% endautoescape %
第二个选项更好,因为它是由 django 提供的,只有开发人员才有权限。
【讨论】:
以上是关于在另一个模板中显示来自 Django 视图的 HTML 表的主要内容,如果未能解决你的问题,请参考以下文章
Django Python - 如何在一个 HTML 模板中显示来自不同表的信息