web-dev-qa-db-ja.com

djangoテンプレートフィルターhtmlタグを削除

次のDjangoテンプレート変数です。Djangoテンプレートフィルターを介してHTMLタグを削除することは可能ですか?

 {{myvar|safe}}

次のようにhtmlを出力します

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

striptags を見ましたか?それはあなたのHTMLをこれに変えます(もちろんThisの構文強調表示を除いて):

sddfdsfsdfsdf sd fsdf sd fsdf This link

ただし、このテンプレートフィルターは regex を使用してHTMLタグを削除することに注意してください。 ご存じのとおり 、正規表現は、ほとんどの場合HTMLを操作するための適切なツールではありません。 HTMLが外部からのものである場合は、実際のHTMLパーサー(例: lxml.html.clean

39

ストリップタグ

すべての[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 も確認してください。

18
jatin