次のDjangoテンプレート変数です。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タグを削除することに注意してください。 ご存じのとおり 、正規表現は、ほとんどの場合HTMLを操作するための適切なツールではありません。 HTMLが外部からのものである場合は、実際のHTMLパーサー(例: lxml.html.clean
。
ストリップタグ
すべての[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 も確認してください。