首页 > 解决方案 > 在 Django 视图中,如何正确地将返回的 HTML 表呈现给模板?

问题描述

我无法正确地将使用 Pandas DataFrame.to_html 创建的 html 表传递给 Django 视图。
我该如何正确地做到这一点?

在views.py中我有这个功能:

def my_view(request):
    data_table = Class().main()
    return render_to_response('app/insight.html', {'data_table':data_table})

Class().main() 成功返回一个 HTML 表。

简化的insight.html 正文将是:

<body>
    {{data_table}}
</body>

问题是我得到的来源如下:

&lt;table border=&quot;1&quot; class=&quot;dataframe&quot;&gt;
  &lt;thead&gt;
    &lt;tr style=&quot;text-align: right;&quot;&gt;
      &lt;th&gt;header 1:&lt;/th&gt;
      &lt;th&gt;header 2&lt;/th&gt;
      &lt;th&gt;header 3&lt;/th&gt;
      &lt;th&gt;header 4&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;data 1&lt;/td&gt;
      &lt;td&gt;data 2&lt;/td&gt;
      &lt;td&gt;data 3&lt;/td&gt;
      &lt;td&gt;data 4&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

和一个页面显示:

<table border="1" class="dataframe"> <thead> <tr style="text-align: right;"> <th>header 1</th> <th>header 2</th> <th>header 3</th> <th>header 4</th> </tr> </thead> <tbody> <tr> <td>data 1</td> <td>data 2</td> <td>data 3</td> <td>data 4</td> </tr> </tbody> </table>

标签: djangodjango-templatesdjango-views

解决方案


您需要告诉模板在这样的变量中呈现 html 是安全的:

<body>
    {{data_table|safe}}
</body>

相关答案:https ://stackoverflow.com/a/4848661/2174832


推荐阅读