1. 程式人生 > 程式設計 >django 模版關閉轉義方式

django 模版關閉轉義方式

django 模版顯示的html中出現'類似的ascii字元,這是由於django對單引號進行了轉義,可以通過關閉轉義解決html處理異常問題。

關閉django轉義的方法有如下兩種:

1.關閉單個模版變數的轉義:

利用"|safe" 過濾器告訴django這個變數不需要轉義, 如模版中:{{ data|sage }}

2.利用django模版標記關閉html或js塊轉義

{% autoescape off %}

code..

{% endautoescape %}

補充知識:Django使用mark_safe()和format_html()函式

django從view向template傳遞HTML字串的時候,django預設不渲染此HTML,原因是為了防止這段字串裡面有惡意攻擊的程式碼。

如果需要渲染這段字串,需要在view裡這樣寫:

from django.utils.safestring import mark_safe
 
def view(request):
  ....
  pageHtml = mark_safe("<a href='#'>首頁</a>")
  ret =         
  {"equit_cate_list":list,"count":count,"ecform":ecform,"page":page,"pageHtml":pageHtml}
  return render(request,"list_equip_category.html",ret)

前端頁面直接使用{{pageHtml}}即可。

mark_safe這個函式就是確認這段函式是安全的,不是惡意攻擊的。

adminx中定義的一些外掛等都是用mark_safe()進行渲染的。

django 模版關閉轉義方式

format_html和mark_safe非常類似,本質還是呼叫mark_safe函式,不同在於傳參方式,mark_safe直接傳遞完整的html字串;

而format_html需要使用{}佔位符:

format_html('<span style="color:{};">{}</span>',color_code,obj.approval)

以上這篇django 模版關閉轉義方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。