web-dev-qa-db-fra.com

django filtre de modèle supprimer les balises html

Dans la variable de modèle suivante Django .Est-il possible de supprimer les balises html via les filtres de modèle Django

 {{myvar|safe}}

Ce qui suit produirait un html comme

     <div>sddfdsfsdfsdf sd fsdf sd fsdf </div><a>This link</a><img src="some source" />
24
Rajeev

Avez-vous regardé striptags ? Cela transformerait votre HTML en ceci (moins la coloration syntaxique de This, bien sûr):

sddfdsfsdfsdf sd fsdf sd fsdf This link

Mais sachez que ce filtre de modèle utilise un regex pour éliminer les balises HTML. Comme nous le savons , les regex ne sont pas le bon outil pour travailler avec HTML la plupart du temps. Si votre code HTML vient de l'extérieur, assurez-vous de le nettoyer avec un véritable analyseur HTML, par ex. lxml.html.clean .

39
Benjamin Wohlwend

striptags

Fait tous les efforts possibles pour supprimer toutes les balises [X] HTML.

Par exemple:

{{ myvar|striptags }}

Si myvar est <b>Joel</b> <button>is</button> a <span>slug</span>, la sortie sera Joel is a slug.

Vous pouvez également utiliser strip_tags dans votre code python c'est-à-dire dans un formulaire.

Par exemple, dans une méthode de nettoyage de formulaire:

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

Voir Django HTML Utils , Consultez également ce simple Django HTML Sanitizer App .

18
jatin