1. 程式人生 > >4 Template層- HTML轉義

4 Template層- HTML轉義

html標簽 escape djang data return blog ima 標簽 .html

閱讀目錄

  • 1.HTML轉義
  • 2.會被自動轉義的字符
  • 3.關閉轉義
  • 4.字符串字面值
回到頂部

1.HTML轉義

  • Django對字符串進行自動HTML轉義,如在模板中輸出如下值:
技術分享圖片
視圖代碼:
def index(request):
    return render(request, ‘temtest/index2.html‘,
                  {
                      ‘t1‘: ‘<h1>hello</h1>‘
                  })
模板代碼:
{{t1}}
技術分享圖片

  • 顯示效果如下圖:

技術分享圖片



技術分享圖片
技術分享圖片
技術分享圖片

技術分享圖片

技術分享圖片

回到頂部

2.會被自動轉義的字符

  • html轉義,就是將包含的html標簽輸出,而不被解釋執行,原因是當顯示用戶提交字符串時,可能包含一些攻擊性的代碼,如js腳本
  • Django會將如下字符自動轉義:
技術分享圖片
< 會轉換為&lt;

> 會轉換為&gt;

‘ (單引號) 會轉換為&#39;

" (雙引號)會轉換為 &quot;

& 會轉換為 &amp;
技術分享圖片

  • 當顯示不被信任的變量時使用escape過濾器,一般省略,因為Django自動轉義
{{ t1|escape }}


回到頂部

3.關閉轉義

  • 對於變量使用safe過濾器
{{ data|safe }}

  • 對於代碼塊使用autoescape標簽
{ % autoescape off %}
  {{ body }}
{ % endautoescape %}

  • 標簽autoescape接受on或者off參數
  • 自動轉義標簽在base模板中關閉,在child模板中也是關閉的

技術分享圖片

回到頂部

4.字符串字面值

  • 手動轉義
{ { data|default:"<b>123</b>" }}

  • 應寫為
{ { data|default:"&lt;b&gt;123&lt;/b&gt;" }}

技術分享圖片

技術分享圖片

4 Template層- HTML轉義