django基礎知識之HTML轉義

HTML轉義

  • Django對字符串進行自動HTML轉義,如在模板中輸出以下值:
視圖代碼:
def index(request): return render(request, 'temtest/index2.html', { 't1': '<h1>hello</h1>' }) 模板代碼: {{t1}} 
  • 顯示效果以下圖:
&lt h1 &gt hello  &lt /h1 &gt

會被自動轉義的字符

  • html轉義,就是將包含的html標籤輸出,而不被解釋執行,緣由是當顯示用戶提交字符串時,可能包含一些攻擊性的代碼,如js腳本
  • Django會將以下字符自動轉義:
< 會轉換爲&lt; > 會轉換爲&gt; ' (單引號) 會轉換爲&#39; " (雙引號)會轉換爲 &quot; & 會轉換爲 &amp; 
  • 當顯示不被信任的變量時使用escape過濾器,通常省略,由於Django自動轉義
{{t1|escape}}

關閉轉義

  • 對於變量使用safe過濾器
{{ data|safe }}
  • 對於代碼塊使用autoescape標籤
{ % autoescape off %}
{{ body }}
{ % endautoescape %}
  • 標籤autoescape接受on或者off參數
  • 自動轉義標籤在base模板中關閉,在child模板中也是關閉的

字符串字面值

  • 手動轉義
{ { data|default:"<b>123</b>" }} 
  • 應寫爲
{ { data|default:"&lt;b&gt;123&lt;/b&gt;" }}
相關文章
相關標籤/搜索