使用 Wagtail 在博客文章中显示字数

奥斯汀格兰特

我想知道如何创建一个模板标签来获取 Wagtail 中整个博客文章的字数。我环顾四周,看到了一些使用 python 的不同方法,但不太确定如何使用 wagtail 来做,因为视图经常被抽象掉。考虑到在许多情况下,创建者可能想要计算 wagtail 模板(介绍、正文等)的多个部分,因此查询似乎也变得更加复杂。

我注意到在管理员中还有一个很好的包可以为您执行此操作,但我想在用户端显示它。

我猜这是一个非常简单的答案,但我仍然不熟悉在没有视图的情况下将新变量传递给 Wagtail 中的模板。

谢谢!

加气工

模板标签在这里不是最好的方法——模板与页面的呈现有关,但字数是页面数据的一个有意义的属性,它独立于任何特定的呈现。我建议word_count改为在您的页面模型上定义为方法 - 然后它始终可以作为page.word_count(){{ page.word_count }}在模板中使用。这是它如何工作的一个例子(使用该str.split方法,它在空格上分割,作为获取字数的一种廉价而愉快的方式):

class BlogPage(Page):
    intro = RichTextField()
    body = StreamField([
        ('heading', blocks.CharBlock()),
        ('paragraph', blocks.RichTextBlock()),
        ('image', ImageChooserBlock()),
    ])

    def word_count(self):
        count = len(self.intro.split())
        for block in self.body:
            if block.block_type == 'paragraph':
                count += len(str(block.value).split())

        return count

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Wagtail 博客文章目录

Wagtail通过流域在主页上显示最新博客文章

在Django 2.0中使用Wagtail

使用Firestore进行简单的博客文章显示

使用Wagtail CMS代码段,但在管理面板中隐藏

wagtail - 如何使用 slug 获取页脚中的所有页面

在Wagtail中,可以在RoutablePageMixin中使用代理模型吗?

在Wagtail博客中找不到的标签:Django使用mysite.urls中定义的URLconf,尝试了这些URL模式

在 Wagtail 中隐藏 `***Block`

使用 Gatsby Contentful 显示所有博客文章

使用React JS将博客文章显示为“网格”

使用Node和Express显示Markdown编码的博客文章

使用Wagtail作为API层

使用 Silverstripe 博客模块时,如何仅显示已分配类别的博客文章?

使用JQuery计算博客文章中的所有单词

如何使用模型表单更新django中的博客文章?

Puput(基于Wagtail的博客)-文件在哪里?

在 Wagtail 中迁移数据

在Django中更改Wagtail密码

流场中的Wagtail SnippetChooserBlock

Wagtail 中的通配符子域

使用博客ID和文章ID将Shopify API中的文章数据添加到DOM

使用Django handler404中断Wagtail重定向

如何在管理页面上使用 RadioSelect 在 Wagtail 中制作多对一?

我应该对Django应用中的所有模型都使用Wagtail吗?

如何使用 InlinePanel 以多对多关系链接 wagtail 中的两个页面模型

如何修改wagtail CMS,以便任何用户都可以在自己的博客下发布博客文章

如何测试使用 Wagtail Hooks 注册的端点?

使用Wagtail RichText流域创建子列表