gpt4 book ai didi

python - 是否有处理 "...more"的 Django 模板过滤器,当您单击它时,它会显示更多文本?

转载 作者:行者123 更新时间:2023-11-28 16:53:07 26 4
gpt4 key购买 nike

假设我有一个很大的段落。

我只想显示前 15 个单词。之后,此人单击“更多”以查看其余内容。

最佳答案

只是把它搞砸了,似乎可以做你想做的事,而且不依赖任何外部 JS 库。

免责声明:我没有在 IE 中尝试过,但 chrome 和 firefox 工作正常。

from django import template
from django.utils.html import escape
from django.utils.safestring import mark_safe

register = template.Library()

import re

readmore_showscript = ''.join([
"this.parentNode.style.display='none';",
"this.parentNode.parentNode.getElementsByClassName('more')[0].style.display='inline';",
"return false;",
]);

@register.filter
def readmore(txt, showwords=15):
global readmore_showscript
words = re.split(r' ', escape(txt))

if len(words) <= showwords:
return txt

# wrap the more part
words.insert(showwords, '<span class="more" style="display:none;">')
words.append('</span>')

# insert the readmore part
words.insert(showwords, '<span class="readmore">... <a href="#" onclick="')
words.insert(showwords+1, readmore_showscript)
words.insert(showwords+2, '">read more</a>')
words.insert(showwords+3, '</span>')

# Wrap with <p>
words.insert(0, '<p>')
words.append('</p>')

return mark_safe(' '.join(words))

readmore.is_safe = True

要使用它,只需在您的应用中创建一个 templatetags 文件夹,在其中创建 __init__.py 文件,然后将此代码放入 readmore.py

然后在您要使用它的任何模板的顶部,只需添加:{% load readmore %}

要使用过滤器本身:

{{ some_long_text_var|readmore:15 }}

:15 表示您希望在阅读更多链接之前显示多少个单词。

如果您想要像 ajax 加载全部内容这样奇特的东西,那就有很大的不同,并且需要更多的基础设施。

关于python - 是否有处理 "...more"的 Django 模板过滤器,当您单击它时,它会显示更多文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4598460/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com