簡體   English   中英

Django模板正在刪除html表,無論使用安全還是自動轉義

[英]Django template is removing html table, regardless of using safe or autoescape

我正在嘗試將具有html表的變量作為Django模板中的HTML表傳遞給它。

當我通過它並將其標記為| 安全或關閉自動退出功能。 所有HTML都已插入,但表已完全刪除,有人知道為什么以及如何將其關閉嗎?

import urllib.request
from bs4 import BeautifulSoup
tt_opener = urllib.request.build_opener()
tt_opener.addheaders = [('User-Agent', 'Mozilla/5.0')]
tt_service = tt_opener.open('https://managed.mytalktalkbusiness.co.uk/network-status/')
tt_soup = BeautifulSoup(tt_service, "html.parser")
tt_data = tt_soup.table

模板

 <div id="TALK-TALK-Service" style="width:50vw; height:50vw; float:left;">
        {{ TalkTalk |kksafe }}
 </div>

通過外殼打印的tt_data變量

<table border="0" cellpadding="0" cellspacing="0" class="opaltable" width="100%"><th nowrap="nowrap"> </th><th nowrap="nowrap">Issue</th><th nowrap="nowrap">Services affected</th><th nowrap="nowrap">Location</th><th nowrap="nowrap">Last update</th><tr><td width="20"><img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif"/></td><td width="350"><a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15462">incident 10574541 - Washington Exchange - no service</a></td><td>Extranet, Ethernet, EoFTTC &amp; EFM via TalkTalk, DSL via TalkTalk</td><td width="100">n/a</td><td nowrap="nowrap" width="150">11th Oct 2017 12:53</td></tr><tr><td width="20"><img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif"/></td><td width="350"><a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15448">Incident 10573277 -  Network – P1 – Some TTB customers are experiencing Post Dial Delay  SIP/VOE</a></td><td>SIP/VOE</td><td width="100">n/a</td><td nowrap="nowrap" width="150">11th Oct 2017 12:27</td></tr></table>

網頁上顯示的html

<div id="TALK-TALK-Service" style="width:50vw; height:50vw; float:left;">
        [&nbsp;, Issue, Services affected, Location, Last update, <img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif"><a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15462">incident 10574541 - Washington Exchange - no service</a>Extranet, Ethernet, EoFTTC &amp; EFM via TalkTalk, DSL via TalkTalkn/a11th Oct 2017 12:53, <img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif">, <img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif">, <a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15462">incident 10574541 - Washington Exchange - no service</a>, <a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15462">incident 10574541 - Washington Exchange - no service</a>, Extranet, Ethernet, EoFTTC &amp; EFM via TalkTalk, DSL via TalkTalk, n/a, 11th Oct 2017 12:53, <img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif"><a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15448">Incident 10573277 -  Network – P1 – Some TTB customers are experiencing Post Dial Delay  SIP/VOE</a>SIP/VOEn/a11th Oct 2017 12:27, <img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif">, <img src="https://managed.mytalktalkbusiness.co.uk/images/redlight.gif">, <a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15448">Incident 10573277 -  Network – P1 – Some TTB customers are experiencing Post Dial Delay  SIP/VOE</a>, <a href="https://managed.mytalktalkbusiness.co.uk/network-status-report.php?reportid=15448">Incident 10573277 -  Network – P1 – Some TTB customers are experiencing Post Dial Delay  SIP/VOE</a>, SIP/VOE, n/a, 11th Oct 2017 12:27]
 </div>

您的tt_soup變量是tt_soup中的Tag對象,而不是字符串。 您可以在您的視圖中進行檢查。

tt_soup = BeautifulSoup(tt_service, "html.parser")
print(type(tt_soup))

由於tt_soup對象是可調用的,因此Django模板語言在呈現表時會對其進行調用,這會產生意外的結果。 您可以通過將tt_soup轉換為視圖中的字符串來防止這種情況。

tt_soup = BeautifulSoup(tt_service, "html.parser")
tt_soup = str(tt_soup)  #  unicode(tt_soup) in Python 2

也許有一個更合適的方法可以調用tt_soup對象而不是str() ,但是我不知道,因為我對BeautifulSoup不太熟悉。

暫無
暫無

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

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