Представление Wagtail с параметрами URL или несколькими пользовательскими URL

У меня есть календарь, который используется в общем приложении Django, но я также хочу показывать его в приложении Wagtail (которое показывает общий текстовый контент/блог) для этого сайта.

Я дошел до того, что могу отображать календарь на странице Wagtail, с некоторым ручным вводом параметров даты. Модель для этого выглядит следующим образом:

class SchedulePage(PostPageExtras, RoutablePageMixin, Page):

    content_panels = Page.content_panels
    
    def get_context(self, request, *args, **kwargs):
        context = super().get_context(request, *args, **kwargs)
        context['schedule'] = self.get_calendar()
        return context
        
    def get_calendar(self):
        the_year = 2024
        the_month = 7
        cal = ScheduleCalendar().formatmonth(the_year, the_month, withyear=True)
        return cal
        

Я пытался решить эту проблему с помощью RoutablePageMixin, но не достиг никакого прогресса. Я могу генерировать значения the_year и the_month, вытекающие из .now(), поэтому календарь всегда показывает текущий месяц. Но я хочу, чтобы пользователь мог переходить к следующему/предыдущему месяцу.

В приложении Django это реализовано так: есть два урла, которые указывают на одно и то же представление, и представление интерпретирует параметры так, как нужно:

path('/schedule/', views.ScheduleCalendarView.as_view(), name='control-schedule-calendar'),
re_path(r'^/schedule/(?P<year>\d+)/(?P<month>\d+)/$', views.ScheduleCalendarView.as_view(), name='control-schedule-monthview'), 

При использовании этих двух URL-адресов вы получите одинаковое отображение страницы (на июль 2024 года):

https://example.com/schedule/

https://examle.com/schedule/2024/07/

Потому что в первом примере представление создает параметры the_year/the_month, если они не присутствуют в URL.

Есть и третий URL, с другим видом, который показывает детализацию за определенный день:

re_path(r'^/schedule/(?P<year>\d+)/(?P<month>\d+)/(?P<day>\d+)/$', views.ControlScheduleDayView.as_view(), name='control-schedule-dayview'),

Все это довольно просто в обычном Django.

Полагаю, что я хотел бы следовать той же схеме, или трем URL, и, возможно, не нуждаться во втором представлении для дневного представления, был бы какой-то переключатель, если бы параметр day был в URL.

Как сделать это в модели Wagtail? Или как сделать это в общем окружении Django, загрузив шаблоны Wagtail/blog и показав навигацию Wagtail/blog?

Заранее спасибо.

Мы делаем это - фактически это наша вторая итерация по одному и тому же шаблону. Проще было извлечь код в gist: https://gist.github.com/cnk/603c48f6029e033d38e006db6988843a

Вернуться на верх