在模板语言中,是否可以去除所有标签,但保留带有段落(<p>
)的标签?
示例:
假设:
<p>In this lesson, you will learn how to apply....</p>
<br>
<img src="http://example.com/photos/b/8/d/0/60312.jpeg" style="max-height : 700px ; max-width : 700px ; margin : 5px">
<p>After attending this workshop you will always be the star!</p>
<ul><li> Test </li></ul>
最终输出:
<p> In this lesson, you will learn how to apply....</p>
<p>After attending this workshop you will always be the star!</p> Test
答案 0 :(得分:1)
您可以使用bleach's clean
method在Python中执行此操作,然后可以在模板中将其包装在模板过滤器中。简单用法:
import bleach
text = bleach.clean(text, tags=['p',], strip=True)
您的自定义过滤器看起来像这样:
from django import template
from django.template.defaultfilters import stringfilter
import bleach
register = template.Library()
@register.filter
@stringfilter
def bleached(value):
return bleach.clean(value, tags=['p',], strip=True)
答案 1 :(得分:1)
您可以使用templatefilter
和beautifulsoup
来完成此操作。
安装BeautifulSoup。然后在任何应用templatetags
内创建一个文件夹folder
。您需要在__init__.py
文件夹中添加一个空的templatetags
。
在templatetags
文件夹中创建文件parse.py
from BeautifulSoup import BeautifulSoup
from django import template
register = template.Library()
@register.filter
def parse_p(html):
return ''.join(BeautifulSoup(html).find('p')
template.html中的{% load parse %}
{{ myhtmls|parse_p }}
其中myhtmls
是
<p>In this lesson, you will learn how to apply....</p>
<br>
<img src="http://example.com/photos/b/8/d/0/60312.jpeg" style="max-height : 700px ; max-width : 700px ; margin : 5px">
<p>After attending this workshop you will always be the star!</p>
<ul><li> Test </li></ul>