url_to (path, alt=None, absolute=None, external=None, base_url=None, resolve=None, strict_resolve=None)

Calculates the URL from the current source object to the given other source object. Alternatively, a path can also be provided instead of a source object.

This is what the |url filter uses internally to generate URLs.

If resolve is not False, then (so long as path is not a URL containing either a scheme or a netloc) an attempt is made to resolve path via the Lektor database to a source object, then the URL of that source object is used. If database-resolution of the path fails, then the path is interpreted as a URL-path, or, if strict_resolve is True, an error is raised.

If the path starts with a leading bang (!) then no resolving is performed. This is equivalent to passing resolve=False.

An explicit value for alt may be specified via the alt parameter to url_to. Alternatively, an alt query arg may be included in the path parameter. For example, src.url_to('/', alt='de') is equivalent to src.url_to('/?alt=de') — both return the URL to the root of the site with alt=de.

If no alt is provided the alt of the page is used.

In addition to that absolute can enforce the URL to be absolute instead of relative to the current page and external can be used to also add the domain part to the URL (if configured). The default behavior is to use the configured URL style (which is relative) unless absolute or external were explicitly provided. For more information read about this in the Project Configuration.


{% set downloads = site.get('/downloads') %}
Path from downloads to here: {{ downloads.url_to(this) }}