在下面的Django模板變量。是有可能通過Django的模板過濾器去除html標籤Django的模板過濾器去除html標籤
{{myvar|safe}}
下將輸出一個HTML一樣
<div>sddfdsfsdfsdf sd fsdf sd fsdf </div><a>This link</a><img src="some source" />
在下面的Django模板變量。是有可能通過Django的模板過濾器去除html標籤Django的模板過濾器去除html標籤
{{myvar|safe}}
下將輸出一個HTML一樣
<div>sddfdsfsdfsdf sd fsdf sd fsdf </div><a>This link</a><img src="some source" />
有你看了striptags
?它會變成你的HTML到這個(的This
減去語法高亮,當然):
sddfdsfsdfsdf sd fsdf sd fsdf This link
但要注意,這個模板過濾器使用regex剝離出來的HTML標籤。 As we know,正則表達式不適合大多數情況下使用HTML。如果您的HTML來自外部,請務必使用真正的HTML解析器對其進行清理,例如lxml.html.clean
。
striptags
盡全力去除所有[X] HTML標籤。
例如:
{{ myvar|striptags }}
如果MYVAR是<b>Joel</b> <button>is</button> a <span>slug</span>
,輸出將是Joel is a slug
。
您還可以在您的python代碼中使用strip_tags,即在窗體中。
例如,在一個乾淨利落的方法:
class AddressForm(forms.ModelForm):
class Meta:
model = Address
def clean(self):
from django.utils.html import strip_tags
cleaned_data = super(AddressForm, self).clean()
cleaned_data['first_name'] = strip_tags(cleaned_data.get('first_name'))
return cleaned_data
見Django HTML Utils,還檢查了這個簡單的Django HTML Sanitizer App。
圖片標籤會發生什麼...... ......? – Rajeev
它去掉了所有的標籤,只留下了DOM中所說的「TextNode」。因此,您的圖像將被刪除而不會留下任何痕跡。 –
我建議使用'{{myvar | striptags | safe}}',這樣HTML實體(例如' ')不會被Django轉義,而是保存在HTML代碼中並由Web瀏覽器呈現。請注意,'striptags'過濾器實際上剝離了HTML標籤,而不是實體。 – Luca