django - 如何在鹡鸰中创建自定义块?
问题描述
这是我的StreamField
:
body = StreamField([
('heading', blocks.CharBlock(classname="full title")),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
])
我的问题是:如何添加我自己可以传递的块StreamField
?我的意思是包含多个图像的块,比如块?我没有在 wagtail 文档中找到我的问题的答案。
解决方案
当你问:
我的意思是包含多个图像的块,比如块?
这是您可以尝试的示例,我不确定您要实现的具体目标是什么,因此我将其保留相当通用,但可以根据需要进行修改。
class GalleryBlock(blocks.StructBlock):
"""
Nameable gallery with multiple images.
"""
name = blocks.CharBlock(required=True)
images = blocks.ListBlock(
blocks.StructBlock([
("image", ImageChooserBlock(required=True)),
("alt_text", blocks.CharBlock(required=False, max_length=100)),
])
)
然后,您当然需要将其添加到您的 StreamField 中body
。
可能是这样的。
body = StreamField([
('heading', blocks.CharBlock(classname="full title")),
('paragraph', blocks.RichTextBlock()),
('image', ImageChooserBlock()),
('gallery', GalleryBlock(icon='image')), # add this line
])
希望这可以帮助您了解这些内置块是多么灵活和令人敬畏,以及 StreamField 可以多么令人敬畏。有时您需要将它们组合起来以构建满足您需求的特定结构。
推荐阅读
- python-3.x - 使用请求的 Python SSL 证书错误
- tensorflow - TypeError:_variable_v2_call() 在张量流版本 = 2.0.0 中得到了一个意外的关键字参数“初始化器”
- bash - 复制从特定字符开始的每行的最后一个数字并在该字符之后追加
- javascript - 上不了onupgrade需要调用,不管我改多少次版本号
- tablefilter - Tablefilter:如何在选择过滤器中设置“默认值”?
- python - Networkx 显然是在打乱颜色列表 python
- android - 仪表测试中的 Internet 访问
- python - 如何在具有多个表格的 .ASPX 网站上抓取表格?
- python - Python 时区:为什么 EST 时差一小时?(pytz / dateutil)
- kubernetes-ingress - 如何在gloo入口控制器中使用动态值路由请求