For pages like a "dashboard", HomePage, blog index page, where I know that There Can Be Only One, I usually just define a specific type for that page. Then I can reference it explicitly, and even provide a template tag to get the URL:
@register.simple_tag(takes_context=False)
def training_homepage_link():
return TrainingHomePage.objects.get().url
This, of course, will blow up if more than one such page is in the system. In order to preserve the invariant that there can only be one such page, I prevent the creation of new such pages through admin interface. For example, the TrainingHomePage used in this example looks like this:
class TrainingHomePage(MultiPartable, Page):
body = RichTextField()
parent_page_types = []
subpage_types = []
That way, it never shows up as an option in the admin interface.
For cases where there can be more than one such instance, I use a variation on this technique to define important points a site's navigation hierarchy. For example, in the same site I define a "ServiceCategoryPage". The user can create as many categories as they like, but they have to be children of the ServiceHomePage (of which, there can be only one). Then when I need to build a menu I can just query for the DB for all live ServiceCategoryPages. The production site I'm using these examples from is
https://www.dademoeller.com — it's pretty complicated, but there are no hard-coded or configuration-based URLs, it's all dynamic based on the DB. (This wasn't a design goal or anything, I just realized that it worked out that way as I was typing up this response.)