From 5d00869aa57ed50f4f10953efbc0f2b3a5fd3905 Mon Sep 17 00:00:00 2001 From: David Lord Date: Fri, 27 Apr 2018 09:53:29 -0700 Subject: [PATCH] expand explantion about default redirects --- docs/api.rst | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/docs/api.rst b/docs/api.rst index 7b03a41a..cdb05638 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -717,9 +717,18 @@ definition for a URL that accepts an optional page:: pass This specifies that ``/users/`` will be the URL for page one and -``/users/page/N`` will be the URL for page `N`. - -Note: Underlying behaviour in Werkzeug redirect URLs containing a default value to its simpler form with a 301 redirect. +``/users/page/N`` will be the URL for page ``N``. + +If a URL contains a default value, it will be redirected to its simpler +form with a 301 redirect. In the above example, ``/users/page/1`` will +be redirected to ``/users/``. If your route handles ``GET`` and ``POST`` +requests, make sure the default route only handles ``GET``, as redirects +can't preserve form data. :: + + @app.route('/region/', defaults={'id': 1}) + @app.route('/region/', methods=['GET', 'POST']) + def region(id): + pass Here are the parameters that :meth:`~flask.Flask.route` and :meth:`~flask.Flask.add_url_rule` accept. The only difference is that