django輸出html內(nèi)容的實例
最近在學習django,于是就用django做了一個簡單的網(wǎng)站,用來練手,具體功能就是從網(wǎng)上抓取數(shù)據(jù),然后放到我的網(wǎng)站上面,但是遇到一個問題就是django無法輸出html格式的內(nèi)容,只能以字符串的形式輸出:
data = '<h1>hello world</h1>'
<p>{{ data }}</p>
我們目的是輸出的是:
hello world
但是結(jié)果輸出的是:
<h1>hello world</h1>
在網(wǎng)上搜了好久,終于找到解決辦法:
對于單個變量使用django的過濾器,告訴Django這個字符串不用進行HTML轉(zhuǎn)義,方法如下:
data | safe
對于一段模板內(nèi)容可以使用autoescape標簽,比如:
{% autoescape off %}
{{ data }}
{% endautoescape %}
off 的意思是關(guān)閉對html的轉(zhuǎn)義,而將off替換成on就表示進行html轉(zhuǎn)義,默認進行html轉(zhuǎn)義
注意:autoescape 具備繼承性的,如果在父模版中定義了,則在子模版對應內(nèi)容部分也存在此屬性
我們可能會疑問,django為什么要將這些字符轉(zhuǎn)義,而不是按原本html的內(nèi)容輸出呢?
我們舉個例子:
需要用戶輸入用戶名來注冊,這個用戶輸入了用戶名為:
<script type="text/javascript">alert('hello');</script>
假設他輸入的長度合法,而且django也確實沒顯式提供什么特殊字符轉(zhuǎn)換方法,那么每次在網(wǎng)頁上面顯示的時候,豈不是每次都彈出一個窗口,那么不是就很不安全啦。
為了解決這個問題,django默認將所有特殊的字符都轉(zhuǎn)換成在html上面可以顯示的內(nèi)容,而不再包含轉(zhuǎn)義功能!于是,也就出現(xiàn)了上面我想輸出而輸出而輸出不了html的內(nèi)容。
以上這篇django輸出html內(nèi)容的實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用tf.keras.MaxPooling1D出現(xiàn)錯誤問題及解決
這篇文章主要介紹了使用tf.keras.MaxPooling1D出現(xiàn)錯誤問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
解決python2.7 查詢mysql時出現(xiàn)中文亂碼
這篇文章主要介紹了python操作mysql中文顯示亂碼的解決方法,是Python數(shù)據(jù)庫程序設計中經(jīng)常會遇到的問題,非常具有實用價值,需要的朋友可以參考下2016-10-10
使用Python對接OpenAi?API實現(xiàn)智能QQ機器人的方法
這篇文章主要介紹了使用Python對接OpenAi?API實現(xiàn)智能QQ機器人的方法,主要是提供一個方法思路,可以根據(jù)實現(xiàn)代碼延申出更多的解決方法,需要的朋友可以參考下2023-03-03

