Django Wagtail


1. Create a Basic Blog Page

from django.views.generic import DetailView

from wagtail.core.models import Page
from wagtail.blog.models import BlogPage


class BlogPageDetailView(DetailView):
    context_object_name = 'page'
    model = BlogPage
    template_name = 'blog/blog_post.html'

2. Create a Blog Category Page

from wagtail.core.models import Page
from wagtail.snippets.models import Cluster

from blog.models import BlogCategory


class BlogCategoryPage(Page):
    category = models.ForeignKey(
        BlogCategory,
        on_delete=models.PROTECT,
        related_name='pages',
    )

    cluster = models.ForeignKey(
        Cluster,
        on_delete=models.PROTECT,
        related_name='blog_categories',
    )

    content_panels = Page.content_panels + [
        FieldPanel('category'),
        FieldPanel('cluster'),
    ]

3. Create a News Index Page

4. Create a News Article Page

5. Create a Contact Page

6. Create a Menu Page

7. Create a Search Page

8. Create a Snippet Page

9. Create a Tag Page

10. Create a Form Submission Page

11. Create a Custom Image Model

12. Create a Custom Document Model

13. Create a Page Type

14. Create a Page Template

15. Create a Template Fragment

16. Create a StreamField Block

17. Create a Custom Form Field

18. Create a Custom Filter

19. Create a Custom Tag

20. Create a Custom Model Manager

21. Create a Custom Panel

22. Create a Custom Widget

23. Create a Custom Template Compiler

24. Create a Custom Template Context Processor

25. Create a Custom Template Context Filter

26. Create a Custom Template Syntax Node

27. Create a Custom Template Tag Library

28. Create a Custom Model Form

29. Create a Custom QuerySet

30. Create a Custom View

31. Create a Custom Middleware

32. Create a Custom Request Processor

33. Create a Custom Response Processor

34. Create a Custom TemplateLoader

35. Create a Custom Test Case

36. Create a Custom Management Command