1

在模板语言中是否可以去除所有标签但保留带有段落(<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
4

2 回答 2

1

您可以使用templatefilterand来完成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')

在模板.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>
于 2013-09-05T12:22:28.257 回答
1

您可以在 Python 中使用漂白剂的clean方法来执行此操作,然后如果您在模板中需要它,您可以将其包装在模板过滤器中。简单用法:

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)
于 2013-09-05T12:18:06.347 回答