django輸出html內(nèi)容的實(shí)例
最近在學(xué)習(xí)django,于是就用django做了一個(gè)簡(jiǎn)單的網(wǎng)站,用來練手,具體功能就是從網(wǎng)上抓取數(shù)據(jù),然后放到我的網(wǎng)站上面,但是遇到一個(gè)問題就是django無(wú)法輸出html格式的內(nèi)容,只能以字符串的形式輸出:
data = '<h1>hello world</h1>' <p>{{ data }}</p>
我們目的是輸出的是:
hello world
但是結(jié)果輸出的是:
<h1>hello world</h1>
在網(wǎng)上搜了好久,終于找到解決辦法:
對(duì)于單個(gè)變量使用django的過濾器,告訴Django這個(gè)字符串不用進(jìn)行HTML轉(zhuǎn)義,方法如下:
data | safe
對(duì)于一段模板內(nèi)容可以使用autoescape標(biāo)簽,比如:
{% autoescape off %} {{ data }} {% endautoescape %}
off 的意思是關(guān)閉對(duì)html的轉(zhuǎn)義,而將off替換成on就表示進(jìn)行html轉(zhuǎn)義,默認(rèn)進(jìn)行html轉(zhuǎn)義
注意:autoescape 具備繼承性的,如果在父模版中定義了,則在子模版對(duì)應(yīng)內(nèi)容部分也存在此屬性
我們可能會(huì)疑問,django為什么要將這些字符轉(zhuǎn)義,而不是按原本html的內(nèi)容輸出呢?
我們舉個(gè)例子:
需要用戶輸入用戶名來注冊(cè),這個(gè)用戶輸入了用戶名為:
<script type="text/javascript">alert('hello');</script>
假設(shè)他輸入的長(zhǎng)度合法,而且django也確實(shí)沒顯式提供什么特殊字符轉(zhuǎn)換方法,那么每次在網(wǎng)頁(yè)上面顯示的時(shí)候,豈不是每次都彈出一個(gè)窗口,那么不是就很不安全啦。
為了解決這個(gè)問題,django默認(rèn)將所有特殊的字符都轉(zhuǎn)換成在html上面可以顯示的內(nèi)容,而不再包含轉(zhuǎn)義功能!于是,也就出現(xiàn)了上面我想輸出而輸出而輸出不了html的內(nèi)容。
以上這篇django輸出html內(nèi)容的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python使用擴(kuò)展庫(kù)pywin32實(shí)現(xiàn)批量文檔打印實(shí)例
這篇文章主要介紹了Python使用擴(kuò)展庫(kù)pywin32實(shí)現(xiàn)批量文檔打印實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python pandas dataframe如何獲取除了指定列以外的所有列
這篇文章主要介紹了python pandas dataframe如何獲取除了指定列以外的所有列問題,具有很好的參考價(jià)值,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09pyecharts動(dòng)態(tài)軌跡圖的實(shí)現(xiàn)示例
這篇文章主要介紹了pyecharts動(dòng)態(tài)軌跡圖的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04Python函數(shù)必須先定義,后調(diào)用說明(函數(shù)調(diào)用函數(shù)例外)
這篇文章主要介紹了Python函數(shù)必須先定義,后調(diào)用說明(函數(shù)調(diào)用函數(shù)例外),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-06-06用python處理圖片實(shí)現(xiàn)圖像中的像素訪問
本篇文章主要介紹了用python處理圖片實(shí)現(xiàn)圖像中的像素訪問,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05