diff --git a/datasette/views/database.py b/datasette/views/database.py index faf870d032..09b3cf063b 100644 --- a/datasette/views/database.py +++ b/datasette/views/database.py @@ -57,7 +57,7 @@ async def get(self, request, datasette): sql = (request.args.get("sql") or "").strip() if sql: - redirect_url = "/" + request.url_vars.get("database") + "/-/query" + redirect_url = datasette.urls.database(database) + "/-/query" if request.url_vars.get("format"): redirect_url += "." + request.url_vars.get("format") redirect_url += "?" + request.query_string diff --git a/tests/test_html.py b/tests/test_html.py index e38898da7a..2870671679 100644 --- a/tests/test_html.py +++ b/tests/test_html.py @@ -929,6 +929,12 @@ def test_base_url_affects_filter_redirects(app_client_base_url_prefix): ) +def test_base_url_affects_database_query_redirects(app_client_base_url_prefix): + response = app_client_base_url_prefix.get("/fixtures?sql=select+1") + assert response.status_code == 302 + assert response.headers["location"] == "/prefix/fixtures/-/query?sql=select+1" + + def test_base_url_affects_metadata_extra_css_urls(app_client_base_url_prefix): html = app_client_base_url_prefix.get("/").text assert '' in html