簡體   English   中英

從另一個模板中的 Django 視圖顯示 HTML 表

[英]Displaying an HTML table from a Django view in another template

所以我有一個 Django 視圖,它允許用戶上傳一個文件,其中包含要通過 Pandas 數據框繪制的數據。 然后在單獨的視圖中創建該圖,該視圖在原始文件上傳視圖中通過圖像標簽進行引用。 這完美地工作。

現在我還想在圖表圖像旁邊以表格格式顯示數據。 我正在使用 Panda 內置的dataframe.to_html()在單獨的視圖中創建表,該視圖也將在文件上傳視圖中引用。

我正確生成了表格,可以在為表格指定的 URL 中看到。 當我嘗試從文件上傳模板中引用該 URL 時遇到錯誤。

錯誤是:

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

我發現這是因為我的文件上傳模板有這一行:

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

因為視圖正在返回一個content_typetext/htmlHttpResponse

有沒有辦法從我的文件上傳模板中引用該 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>

要解決它,您可以執行下列操作之一:

  1. 以這種方式使用<pre>標記所有轉義字符,例如&lt; &gt; &lt; &gt; 等將被渲染,因為它可以完成為:

<pre> {{ html_table }} </pre>

  1. 使用 django 內置autoescape可用的autoescape過濾器可以這樣做:

{% autoescape off %} {{ html_table }} {% endautoescape %}

第二個選項更好,因為它是由 django 提供的,並且只有開發人員擁有它的權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM