'My urls no longer point to my pages Wagtail

On a wagtail site I have lost links to my blog pages (possibly as a result of moving to a newer version)

My blog listing page is still accessible with the url "http://localhost:8080/blog/"

I have the following models

class BlogListingPage(Page):
    template = "home/blog_listing_page.html"
    subpage_types = ['home.BlogDetailPage']

    blog_listing_title = models.CharField(
        max_length=100,
        blank=False,
        null=False,
        help_text="Heading for the blog listing page",
    )

    content_panels = Page.content_panels + [
        FieldPanel("blog_listing_title"),
    ]


class BlogDetailPage(Page):
    """Blog detail page."""
    template = "home/blog_detail_page.html"

    parent_page_types = ['home.BlogListingPage']

    blog_title = models.CharField(
        max_length=100,
        blank=False,
        null=True,
        help_text="Blog title (100 chars max)",
    )

    content_panels = Page.content_panels + [
        FieldPanel("blog_title"),
    ]

I can list the blog pages in my blog listing page:

        {{ blog_listing.get_children.specific}}
        {% for blog in blog_listing.get_children.live %}
            <h5><a href="{% pageurl blog %}">{{ blog.specific.blog_title}}</a></h5>
            <h5><a href="{{ blog.slug }}">{{ blog.slug }}</a></h5>
        {% endfor %}

The slug displays correctly (e.g. /blog/xxx/) but the pageurl blog is None and if I click on it I get a 404 error (Request URL: http://localhost:8080/blog/xxx/)

Finally, even if I put http://localhost:8080/blog/xxx/ in the browser I get a 404 error

The line

{{ blog_listing.get_children.specific}}

displays the page queryset with the list of wagtail.core.models.Pages as I would expect

If I enter the following code into views

views.py

pqs = BlogListingPage.objects.all()
children = pqs.live()[0].get_children()
for child in children:
    print('s', child.slug, '|', child.url_path)

I get the output

s xxx | /blog/xxx/

Which is what I expect.

Why are the pages/links no longer in sync?

I cannot post an MRE because, ironically, when I try to construct one, it works as expected. I cannot see what the difference is with my live site, but if someone could point to where I might look it would help.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source