2011-07-07 20 views

cevap

31

var gibi HTML çıktı olurdu aşağıdaki

{{myvar|safe}} 

Django şablon Filtreler aracılığıyla html etiketlerini kaldırmak mümkün sının html etiketlerini kaldırmak striptags’a baktın mı? Bu şablon filtre HTML etiketleri çıkarılmasını isteyip bir regex kullandığı

sddfdsfsdfsdf sd fsdf sd fsdf This link 

Ama dikkat edin: O (elbette This eksi dizim) bu işe HTML'nizi açacak. As we know, regex'leri çoğu zaman HTML ile çalışmak için doğru araç değildir. HTML’niz dışarıdan geliyorsa, gerçek bir HTML ayrıştırıcısıyla, örn. lxml.html.clean.

+1

Görüntü etiketlerine ne olur ...... – Rajeev

+3

, tüm etiketleri çıkarır ve yalnızca DOM-konuşmasında 'TextNode'' olarak kabul edilenleri bırakır. Böylece görüntünüz hiçbir iz bırakmadan kaldırılacaktır. –

+1

"{{myvar | striptags | safe}}" işlevini kullanmanızı öneririm. Böylece,   gibi HTML öğeleri Django tarafından engellenmez, ancak HTML kodunda saklanır ve web tarayıcısı tarafından oluşturulur. 'Striptags' filtresinin aslında var olmayan HTML etiketlerini çıkardığını unutmayın. – Luca

12

striptags

tüm [X] HTML etiketlerini şerit mümkün olan tüm çabaları yapar. Örneğin

: myvar <b>Joel</b> <button>is</button> a <span>slug</span> ise

{{ myvar|striptags }} 

çıkış Joel is a slug olacaktır.

Ayrıca python kodunuzdaki strip_tags'ları bir formda da kullanabilirsiniz. Form Temiz yöntemde Örneğin

:

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 

Ayrıca, bu basit Django HTML Sanitizer App göz atın Django HTML Utils bakınız.

İlgili konular