django 模版關(guān)閉轉(zhuǎn)義方式
django 模版顯示的html中出現(xiàn)'類似的ascii字符,這是由于django對單引號進(jìn)行了轉(zhuǎn)義,可以通過關(guān)閉轉(zhuǎn)義解決html處理異常問題。
關(guān)閉django轉(zhuǎn)義的方法有如下兩種:
1.關(guān)閉單個模版變量的轉(zhuǎn)義:
利用'|safe' 過濾器告訴django這個變量不需要轉(zhuǎn)義, 如模版中:{{ data|sage }}
2.利用django模版標(biāo)記關(guān)閉html或js塊轉(zhuǎn)義
{% autoescape off %}
code..
{% endautoescape %}
補(bǔ)充知識:Django使用mark_safe()和format_html()函數(shù)
django從view向template傳遞HTML字符串的時候,django默認(rèn)不渲染此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這個函數(shù)就是確認(rèn)這段函數(shù)是安全的,不是惡意攻擊的。
adminx中定義的一些插件等都是用mark_safe()進(jìn)行渲染的。
format_html和mark_safe非常類似,本質(zhì)還是調(diào)用mark_safe函數(shù),不同在于傳參方式,mark_safe直接傳遞完整的html字符串;
而format_html需要使用{}占位符:
format_html(’<span style='color:{};'>{}</span>’, color_code, obj.approval)
以上這篇django 模版關(guān)閉轉(zhuǎn)義方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
