Automate multi-page app design

My question is based on the solution posted about multipage design with panel.

I would like to make the code a bit easier to maintain with pages being added. Therefore I used a dictionary. Something with the lambda function seems to be wrong because any link points to page 2. Can anybody explain to me what I am doing wrong?

Here is the code


import panel as pn
from panel.template import FastListTemplate

from pages.page_1 import Page1
from pages.page_2 import Page2


def show_page(page_instance):

pages = {
    "Page 1": Page1(),
    "Page 2": Page2()

page_buttons = {}
for page in pages:
    page_buttons[page] = pn.widgets.Button(name=page, button_type="primary")
    page_buttons[page].on_click(lambda event: show_page(pages[page]))

# page1_button, page2_button = page_buttons.values()

# # Set up button click callbacks
# page1_button.on_click(lambda event: show_page(pages["Page 1"]))
# page2_button.on_click(lambda event: show_page(pages["Page 2"]))

sidebar = pn.Column(*page_buttons.values())

main_area = pn.Column(pages["Page 1"].view())

template = FastListTemplate(
    title="Multi-Page App",

# pages/

import panel as pn

class Page1:
    def __init__(self):
        self.content = pn.Column("# Page 1", "This is the content of page 1.")

    def view(self):
        return self.content
# pages/

import panel as pn

class Page2:
    def __init__(self):
        self.content = pn.Column("# Page 2", "This is the content of page 2.")

    def view(self):
        return self.content

Thank you very much for your help.