"Read More" 适用于 Django 所见即所得编辑器
"Read More" for Django WYSIWYG editor
我正在使用 django-summernote
编辑器来创建带有文本和图像的帖子,这些帖子作为 HTML 标签保存在字符字段中。
我想添加 阅读更多 功能,其中显示所有帖子的有限大小预览。一个想法可能是截断字符字段,但如果它们恰好位于边界之间,它可能会导致截断 HTML 个图像标签。
如何解决这个问题?
Django 有两个模板过滤器,您可以使用它来确保您的 HTML 不会出现格式错误:truncatechars_html and truncatewords_html
模板过滤器只是函数,因此您可以在 Python 代码中任何需要的地方导入它们,并将结果分配给可以在其他地方使用的变量,等等。
示例:
from django.template.defaultfilters import truncatechars_html
html = """<p>Look, I’m some HTML. You can truncate me
with Django template filters</p>"""
truncated_value = truncatechars_html(html, 30)
我参加派对迟到了,但 post 出现在搜索结果中。我刚刚使用自定义模板过滤器自己得到了一个可行的解决方案。这使您可以像 WordPress 一样根据具体情况进行休息。这是我所做的(在 this post and the Django docs 的帮助下):
在文本字段中提交的示例 post:
<p>Here is some sample text</p>
<!--more-->
<img src="cool_photo.jpg" />
在templatetags/read_more.py
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter(name='read_more')
@stringfilter
def read_more(value):
pattern = "<!--more-->"
return value.split(pattern, 1)[0]
在呈现截断版本的模板中:
{% load read_more %}
{{ object.body|read_more|safe }}
由于拆分模式是 html 评论,因此无需将其从 post 主体模板中删除:
{{ object.body|safe }}
我正在使用 django-summernote
编辑器来创建带有文本和图像的帖子,这些帖子作为 HTML 标签保存在字符字段中。
我想添加 阅读更多 功能,其中显示所有帖子的有限大小预览。一个想法可能是截断字符字段,但如果它们恰好位于边界之间,它可能会导致截断 HTML 个图像标签。
如何解决这个问题?
Django 有两个模板过滤器,您可以使用它来确保您的 HTML 不会出现格式错误:truncatechars_html and truncatewords_html
模板过滤器只是函数,因此您可以在 Python 代码中任何需要的地方导入它们,并将结果分配给可以在其他地方使用的变量,等等。
示例:
from django.template.defaultfilters import truncatechars_html
html = """<p>Look, I’m some HTML. You can truncate me
with Django template filters</p>"""
truncated_value = truncatechars_html(html, 30)
我参加派对迟到了,但 post 出现在搜索结果中。我刚刚使用自定义模板过滤器自己得到了一个可行的解决方案。这使您可以像 WordPress 一样根据具体情况进行休息。这是我所做的(在 this post and the Django docs 的帮助下):
在文本字段中提交的示例 post:
<p>Here is some sample text</p>
<!--more-->
<img src="cool_photo.jpg" />
在templatetags/read_more.py
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter(name='read_more')
@stringfilter
def read_more(value):
pattern = "<!--more-->"
return value.split(pattern, 1)[0]
在呈现截断版本的模板中:
{% load read_more %}
{{ object.body|read_more|safe }}
由于拆分模式是 html 评论,因此无需将其从 post 主体模板中删除:
{{ object.body|safe }}