In this video we are going to learn how to create a RichTextBlock StreamField, and then we're going to duplicate that StreamField and limit the number of features the editor gives us.
Note: This is a 2 part video lesson. Part 1 will covered how to create a basic StreamField from scratch.
In this video we are going to explore how to add a RichTextBlock as a StreamField inside of an app called "streams". There are a number of ways to add a RichText StreamField to your pages, and we're covering a couple of the harder methods in this video.
# streams/blocks.py from wagtail.core import blocks class RichtextBlock(blocks.RichTextBlock): """Richtext with all the features.""" class Meta: # noqa template = "streams/richtext_block.html" icon = "doc-full" label = "Full RichText" class SimpleRichtextBlock(blocks.RichTextBlock): """Richtext without (limited) all the features.""" def __init__( self, required=True, help_text=None, editor="default", features=None, **kwargs ): # noqa super().__init__(**kwargs) self.features = ["bold", "italic", "link"] class Meta: # noqa template = "streams/richtext_block.html" icon = "edit" label = "Simple RichText"
# flex/models.py # ..... from streams import blocks.py class FlexPage(Page): # .... content = StreamField( [ ("title_and_text", blocks.TitleAndTextBlock()), ("full_richtext", blocks.RichtextBlock()), ("simple_richtext", blocks.SimpleRichtextBlock()), ], null=True, blank=True, )
If you're interested in seeing the entire commit for this video, all the source code is available here.