Skip to content
Browse files

Documented how to handle '%' characters in redirect_to() URL strings …

…(even in

the absence of keyword arguments). Fixed #9773.

git-svn-id: bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
1 parent 80da07e commit b4364e099e7e61abeaf8efc09a1641fb37ea0d8f @malcolmt malcolmt committed
Showing with 12 additions and 1 deletion.
  1. +12 −1 docs/ref/generic-views.txt
13 docs/ref/generic-views.txt
@@ -120,7 +120,10 @@ variable ``{{ }}`` that is set to ``15``.
Redirects to a given URL.
The given URL may contain dictionary-style string formatting, which will be
-interpolated against the parameters captured in the URL.
+interpolated against the parameters captured in the URL. Because keyword
+interpolation is *always* done (even if no arguments are passed in), any ``"%"``
+characters in the URL must be written as ``"%%"`` so that Python will convert
+them to a single percent sign on output.
If the given URL is ``None``, Django will return an ``HttpResponseGone`` (410).
@@ -161,6 +164,14 @@ This example returns a 410 HTTP error for requests to ``/bar/``::
('^bar/$', 'redirect_to', {'url': None}),
+This example shows how ``"%"`` characters must be written in the URL in order
+to avoid confusion with Python's string formatting markers. If the redirect
+string is written as ``"%7Ejacob/"`` (with only a single ``%``), an exception would be raised::
+ urlpatterns = patterns('django.views.generic.simple',
+ ('^bar/$', 'redirect_to', {'url': '%%7Ejacob.'}),
+ )
Date-based generic views

0 comments on commit b4364e0

Please sign in to comment.
Something went wrong with that request. Please try again.