歡迎您光臨本站 註冊首頁

django 模版關閉轉義方式

←手機掃碼閱讀     hongdian2012 @ 2020-06-05 , reply:0

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("首頁") 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()進行渲染的。

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

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

format_html('{}', color_code, obj.approval)


[hongdian2012 ] django 模版關閉轉義方式已經有246次圍觀

http://coctec.com/docs/python/shhow-post-237014.html