path and full_path arguments for output renderers, closes #1179

Output renderer render() and can_render() callbacks can now accept
path and full_path arguments - the path to the HTML version of the
page without the .extension, with and without the query string.

Also fixed path_with_format() so it replaces the extension the current
request used instead of falling back to ?_format=, which Datasette no
longer reads. This broke links generated by renderers such as
datasette-export-notebook, and the URLs returned by ?_extra=renderers
on .json pages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TzcVp1Cq5yCRW81GiN88JX
This commit is contained in:
Claude 2026-10-05 21:44:50 +00:00
commit cf6357cf93
No known key found for this signature in database
10 changed files with 180 additions and 7 deletions

View file

@ -753,7 +753,7 @@ The available table extras are listed below.
.. code-block:: json
{
"json": "/fixtures/facetable.json?_extra=renderers&_format=json&_labels=on"
"json": "/fixtures/facetable.json?_extra=renderers&_labels=on"
}
``custom_table_templates``

View file

@ -625,6 +625,12 @@ When a request is received, the ``"render"`` callback function is called with ze
``request`` - :ref:`internals_request`
The current HTTP request.
``path`` - string
The path to the HTML version of this page, without the ``.extension`` - for example ``/fixtures/facetable`` for a request to ``/fixtures/facetable.test``. This includes the :ref:`setting_base_url` prefix if one is configured.
``full_path`` - string
The same as ``path`` but with the query string included, if there was one - for example ``/fixtures/facetable?_sort=pk``. Use ``datasette.absolute_url(request, full_path)`` to turn this into a full URL.
``error`` - string or None
If an error occurred this string will contain the error message.