2012-05-04 2 views
4

Django에는 저장된 데이터에 특정 HTML 태그를 제거 할 수있는 템플릿 태그가 있습니다.Django 굵게 및 기울임 꼴 요소를 허용하는 템플릿 태그

django 설명서에서 예제를 제공합니다. 모든 b 또는 span 태그가 제거됩니다. 역을 할 수있는 좋은 방법이 있는지 https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#removetags

{{ value|removetags:"b span"|safe }} 

그러나, 나는 궁금하네요. 예를 들어, 지정된 태그를 제외한 모든 태그를 차단하십시오. 필자의 경우에는 굵게 기울임 꼴 태그 만 허용하려고합니다.

답변

3

bleach을 사용하여 자신 만의 템플릿 태그를 작성하십시오.

1

당신은 removetags이 정규 표현식 원본을 기반으로 자신 만의 템플릿 태그를 작성할 수 있습니다

>>> import re 
>>> tags = ['b', 'i'] 
>>> tags_re = u'(%s)' % u'|'.join(tags) 
>>> striptags_re = re.compile(ur'</(?!{0}).*?>|<(?!/)(?!{0}).*?>'.format(tags_re), re.U) 
>>> value = '<b>foo</b><i><p>bar</b>' 
>>> striptags_re.sub(u'', value) 
u'<b>foo</b><i>bar</b>' 
>>> value = '<b>foo</b><p>bar</p>' 
>>> striptags_re.sub(u'', value) 
u'<b>foo</b>bar' 
+0

을 매우 낙담되는 HTML을 구문 분석에 대한 정규 표현식을 사용. –

+0

HTML을 구문 분석하지 않겠습니다. OP는 태그 제거에 대해 물었고 그것을했습니다. 내 코드가 원래 장고 태그처럼 작동한다는 것을 알 수 있습니다. – San4ez

+0

San4ez에 감사드립니다. 간단하고 멋진 솔루션입니다. –

관련 문제