The origin of a page URI ending in .html lilke /add.html is that in static hosting environments those were traditionally really single text files with html-content and the file ending for such a file is .html
But your system is dynamic and creates web pages on the fly. It does not necessarily need the pages ending in .html. Although you can mimic the traditional behaviour if you desire.
But in a modern and dynamic system it is often preferred that there is no ending on the single "pages" at all.
So you could, as Ignacio also suggests, just get rid of the .html and request the /add page, which is a valid and sufficient unique identifier for that resource.
If you like to keep the .html ending. you have to add it also in the route.
urls = (
'/', 'Index',
'/add.html','Add',
)
You can also have multiple routes pointing to the same resource, so that both /add and /add.html are valid and showing the same content, but content duplication has other drawbacks:
urls = (
'/', 'Index',
'/add','Add',
'/add.html','Add',
)
I recommend getting rid of the .html. This means you stick with the code from your question and create links to the page like this:
<a href="/add">add something</a>