diff --git a/CHANGES.rst b/CHANGES.rst index e5ca2fb1..3e50fe0f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -8,6 +8,7 @@ Unreleased ``importlib.metadata.version("flask")``, instead. :issue:`5230` - Restructure the code such that the Flask (app) and Blueprint classes have Sans-IO bases. :pr:`5127` +- Allow self as an argument to url_for. :pr:`5264` Version 2.3.3 diff --git a/src/flask/app.py b/src/flask/app.py index ebb5a202..d710cb96 100644 --- a/src/flask/app.py +++ b/src/flask/app.py @@ -952,6 +952,7 @@ class Flask(App): def url_for( self, + /, endpoint: str, *, _anchor: str | None = None, diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 077cb432..3566385c 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -161,6 +161,13 @@ class TestUrlFor: assert flask.url_for("myview", id=42, _method="GET") == "/myview/42" assert flask.url_for("myview", _method="POST") == "/myview/create" + def test_url_for_with_self(self, app, req_ctx): + @app.route("/") + def index(self): + return "42" + + assert flask.url_for("index", self="2") == "/2" + def test_redirect_no_app(): response = flask.redirect("https://localhost", 307)