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" />
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
.
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 .