在 Django 中混合呈现 html 和纯文本的最佳方法是什么?



在我的网站上,用户可以创建混合使用纯文本和html的帖子。我无法很好地呈现他们的帖子。

例如,他们可能会写:

This is the first line of the post.
<!-- whitespace 1 -->
<ul>
<li>List item 1.</li>
<!-- whitespace 2 -->
<li>List item 2.</li>
<li>List item 3.</li>
</ul>
<!-- whitespace 3 -->
This is the last line of the post.

我希望渲染空格 1 和 3,而不是空格 2。我该怎么做?

我尝试结合使用linebreaksspaceless,但无法使其正常工作。

谢谢

千斤顶

正如我在评论中提到的,您可以使用正则表达式获取每个列表内容的匹配集合,然后检查这些内容以确保它们不包含任何<br>标签。要收集列表元素的内容,可以在(?s)(?<=<[ou]l>).*?(?=</[ou]l>)使用此模式。

使用re.findall("(?s)(?<=<[ou]l>).*?(?=</[ou]l>)", inputstring)获得匹配项集合后,您可以执行以下操作:

for m in matches:
if not re.match("<br>", m):
#input is fine
else:
#lists cannot contain <br> tags

这将拒绝包含带有<br>标记的列表的输入。

为了解释这种模式,(?s)使其也与新行字符匹配.

(?<=<[ou]l>)表示模式必须以<ol><ul>开头

.*?意味着捕获所有内容,直到模式的下一部分

(?=</[ou]l>)表示模式后跟</ol></ul>

相关内容

  • 没有找到相关文章

最新更新