【问题标题】:In a Django view, how do I correctly render a returned HTML table to a template?在 Django 视图中,如何正确地将返回的 HTML 表呈现给模板?
【发布时间】:2019-04-11 17:38:52
【问题描述】:

我无法将使用 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>

【问题讨论】:

  • 你希望它如何显示?

标签: django django-templates django-views


【解决方案1】:

你需要告诉模板在这样的变量中渲染 html 是安全的:

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

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

【讨论】:

  • 这正是我所需要的,谢谢。我以前从未遇到或需要这些标签。我试过两个{ |安全 } 和 {% autoescape off %}。我更喜欢 { |safe } 过滤器,因为它看起来更干净。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2021-08-10
  • 2020-12-16
  • 2015-07-20
  • 1970-01-01
  • 2015-04-01
  • 2011-09-01
相关资源
最近更新 更多