我使用djangos模板过滤器striptags。例如:
>>> from django.utils.html import strip_tags
>>> strip_tags("<p>This is a paragraph.</p><p>This is another paragraph.</p>")
'This is a paragraph.This is another paragraph.'
在段落之间添加空格字符的最佳方法是什么,以便我得到这个字符串:
'This is a paragraph. This is another paragraph.'
编辑:
我的一个想法是编写一个自定义模板过滤器,在使用</p>
过滤器之前用[space]</p>
替换所有striptags
标签。但这是一个干净而强大的解决方案吗?
答案 0 :(得分:2)
{{ page.body|striptags|truncatewords:50 }}
..并得到你描述的相同问题。这是我提出的一个实现 - 希望对其他Django / WagTail开发人员也有用。
from django import template
from django.utils.html import strip_spaces_between_tags, strip_tags
from django.utils.text import Truncator
register = template.Library()
@register.filter(name='excerpt')
def excerpt_with_ptag_spacing(value, arg):
try:
limit = int(arg)
except ValueError:
return 'Invalid literal for int().'
# remove spaces between tags
value = strip_spaces_between_tags(value)
# add space before each P end tag (</p>)
value = value.replace("</p>"," </p>")
# strip HTML tags
value = strip_tags(value)
# other usage: return Truncator(value).words(length, html=True, truncate=' see more')
return Truncator(value).words(limit)
你就像这样使用..
{{ page.body|excerpt:50 }}