Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django模板标记允许粗体和斜体元素_Django_Templates_Bold_Italic_Templatetag - Fatal编程技术网

Django模板标记允许粗体和斜体元素

Django模板标记允许粗体和斜体元素,django,templates,bold,italic,templatetag,Django,Templates,Bold,Italic,Templatetag,Django有一个模板标记,允许您删除存储数据中显示的某些html标记 django文档给出了一个示例。移除任何b或span标签。 然而,我想知道是否有一个好的方法来做相反的事情。例如,将除指定标记外的所有标记列入黑名单。在我的例子中,我只想允许使用粗体和斜体标记 使用编写自己的模板标记。您可以基于原始和此regexp编写自己的模板标记: >>> import re >>> tags = ['b', 'i'] >>> tags_re = u

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

django文档给出了一个示例。移除任何b或span标签。


然而,我想知道是否有一个好的方法来做相反的事情。例如,将除指定标记外的所有标记列入黑名单。在我的例子中,我只想允许使用粗体和斜体标记

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

您可以基于原始和此regexp编写自己的模板标记:

>>> 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'
>>重新导入
>>>标签=['b','i']
>>>标记_re=u'(%s)“%u'|”。连接(标记)
>>>striptags_re=re.compile(ur'|'。格式(tags_re),re.U)
>>>值='foobar'
>>>striptags\u re.sub(u'',值)
u'foobar'
>>>值='foobar

' >>>striptags\u re.sub(u'',值) u'foobar'
不鼓励使用正则表达式解析HTML。我不打算解析HTML。OP问起移除标签的事,我做了。您可以看到,我的代码的工作原理与原来的django Tag非常感谢您的San4ez。这是一个很好且简单的解决方案。
>>> 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'