Django Template标签允许使用粗体和斜体元素

时间:2012-05-04 18:50:40

标签: django templates bold italic templatetag

Django有一个模板标记,允许您删除某些html标记在存储的数据中显示。

django文档给出了一个例子。删除任何b或span标记。 https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#removetags

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

然而,我想知道是否有一个很好的方法来做反向。例如,将所有标签列入黑名单,但指定的标签除外。就我而言,我只想允许使用粗体和斜体标签。

2 个答案:

答案 0 :(得分:3)

使用bleach编写自己的模板标记。

答案 1 :(得分: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'