From b4364e099e7e61abeaf8efc09a1641fb37ea0d8f Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Tue, 9 Dec 2008 07:33:08 +0000 Subject: [PATCH] Documented how to handle '%' characters in redirect_to() URL strings (even in the absence of keyword arguments). Fixed #9773. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9626 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/ref/generic-views.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/ref/generic-views.txt b/docs/ref/generic-views.txt index 0c14c72cc3..427ef91090 100644 --- a/docs/ref/generic-views.txt +++ b/docs/ref/generic-views.txt @@ -120,7 +120,10 @@ variable ``{{ params.id }}`` 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 ========================