如何在不破坏标签的情况下截断html?

时间:2014-06-09 02:36:24

标签: python html django django-templates django-template-filters

如何确保关闭所有html标签?问题出现是因为我想为每篇文章创建一些摘录。例如,有人写了这样的文章:

Hi everyone, I'm just an article and I have few <strong>tags</strong> inside <em>of me</me>

如果我在“标签”之后剪切此消息,我会得到一个未关闭的标签。 在将Django保存到DB之前,如何检查所有用户的输入文本?

2 个答案:

答案 0 :(得分:5)

在Django 1.7中,有一个名为truncatechars_html的特定模板过滤器:

  

与truncatechars类似,只是它知道HTML标签。任何   在字符串中打开但未在之前关闭的标记   截断后立即关闭截断点。

另见truncatewords_html

对于Django&lt; 1.7,您可以使用truncatewords_html,也可以根据1.7(source)中实现的自定义过滤器制作自定义过滤器,或者使用此snippet(尚未测试过)它)。另请参阅代码段博客帖子:Safe truncation of HTML

答案 1 :(得分:1)

对于Django 1.6,有truncatewords_html可用,无需创建自定义过滤器。 https://docs.djangoproject.com/en/1.6/ref/templates/builtins/#truncatewords-html