django基礎知識之HTML轉義:


HTML轉義

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

轉義

會被自動轉義的字符

  • 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;" }}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM