HTML轉義
- Django對字符串進行自動HTML轉義,如在模板中輸出以下值:
視圖代碼:
def index(request): return render(request, 'temtest/index2.html', { 't1': '<h1>hello</h1>' }) 模板代碼: {{t1}}
< h1 > hello < /h1 >
會被自動轉義的字符
- html轉義,就是將包含的html標籤輸出,而不被解釋執行,緣由是當顯示用戶提交字符串時,可能包含一些攻擊性的代碼,如js腳本
- Django會將以下字符自動轉義:
< 會轉換爲< > 會轉換爲> ' (單引號) 會轉換爲' " (雙引號)會轉換爲 " & 會轉換爲 &
- 當顯示不被信任的變量時使用escape過濾器,通常省略,由於Django自動轉義
{{t1|escape}}
關閉轉義
{{ data|safe }}
{ % autoescape off %}
{{ body }}
{ % endautoescape %}
- 標籤autoescape接受on或者off參數
- 自動轉義標籤在base模板中關閉,在child模板中也是關閉的
字符串字面值
{ { data|default:"<b>123</b>" }}
{ { data|default:"<b>123</b>" }}