HTML轉(zhuǎn)義
模板對上下文傳遞的字符串進行輸出時买决,會將以下字符進行轉(zhuǎn)義
所謂html轉(zhuǎn)義就是將? html關(guān)鍵字(包括標簽,特殊字符等)? 進行過濾替換薯演。過濾替換格式如下:
(1)打開? 應(yīng)用/views.py文件骂因,創(chuàng)建視圖html_escape徘键。
def html_escape(request):
??? context={'content':'<h1>hello world</h1>'}
??? return render(request,'booktest/html_escape.html',context)
(2)打開? 應(yīng)用/urls.py文件兑牡,配置url央碟。
url(r'^html_escape/$', views.html_escape),
(3)在templates/booktest/目錄下創(chuàng)建html_escape.html,寫入內(nèi)容
自動轉(zhuǎn)義:{{content}}
(4)運行服務(wù)器均函,在瀏覽器中輸入如下網(wǎng)址亿虽。
http://127.0.0.1:8000/html_escape/
這是因為:django的模板默認會對模板變量 ?進行轉(zhuǎn)義,模板變量中的? “ < ”? “ > ”? 分別被轉(zhuǎn)義成 < ?? > 本例中的html實際上是這樣的:
<h1>hello worl</h1>
關(guān)閉轉(zhuǎn)義
對于變量使用safe過濾器
{{ data|safe }}
對于代碼塊使用autoescape標簽
{ % autoescape off %}
{{ body }}
{ % endautoescape %}
標簽autoescape接受on或者off參數(shù)
自動轉(zhuǎn)義標簽在base模板中關(guān)閉苞也,在child模板中也是關(guān)閉的
字符串字面值
對于在模板中硬編碼的html字符串洛勉,不會轉(zhuǎn)義
模板硬編碼不轉(zhuǎn)義:{ { d | default:"<b>123</b>" }}
如下圖
如果希望出現(xiàn)轉(zhuǎn)義的效果,則需要手動編碼轉(zhuǎn)義如迟。
{ { d | default:">b<123</b>" }}