#21177: redirect() doesn't support redirecting to relative urls
-----------------------------+-----------------------------------
     Reporter:  acatton@…    |      Owner:  nobody
         Type:  Bug          |     Status:  new
    Component:  Core (URLs)  |    Version:  master
     Severity:  Normal       |   Keywords:  redirect url relative
 Triage Stage:  Unreviewed   |  Has patch:  1
Easy pickings:  0            |      UI/UX:  0
-----------------------------+-----------------------------------
 Hi,

 If we use redirect shortcut to redirect to a relative URL, it fails.

 Like in this example:
 {{{
 from django.conf.urls import patterns, url
 from django.shortcuts import redirect

 Using redirect to red

 urlpatterns = patterns('',
     url(r'^foo/bar/$', lambda request: redirect('../baz/')),
 )
 }}}

 It raises a TypeError:

 {{{
 Traceback (most recent call last):
   File "lib/python2.7/site-packages/django/core/handlers/base.py", line
 115, in get_response
     response = callback(request, *callback_args, **callback_kwargs)
   File "foo/foo/urls.py", line 9, in <lambda>
     url(r'^foo/bar/$', lambda request: redirect('../baz/')),
   File "lib/python2.7/site-packages/django/shortcuts/__init__.py", line
 78, in redirect
     return redirect_class(resolve_url(to, *args, **kwargs))
   File "lib/python2.7/site-packages/django/shortcuts/__init__.py", line
 151, in resolve_url
     return urlresolvers.reverse(to, args=args, kwargs=kwargs)
   File "lib/python2.7/site-packages/django/core/urlresolvers.py", line
 496, in reverse
     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args,
 **kwargs))
   File "lib/python2.7/site-packages/django/core/urlresolvers.py", line
 379, in _reverse_with_prefix
     lookup_view = get_callable(lookup_view, True)
   File "lib/python2.7/site-packages/django/utils/functional.py", line 31,
 in wrapper
     result = func(*args)
   File "lib/python2.7/site-packages/django/core/urlresolvers.py", line 97,
 in get_callable
     mod = import_module(mod_name)
   File "lib/python2.7/site-packages/django/utils/importlib.py", line 28,
 in import_module
     raise TypeError("relative imports require the 'package' argument")

 }}}

 However, it looks like there's support for relative URL:

 * https://code.djangoproject.com/ticket/987
 *
 
https://github.com/django/django/blob/636860fbfb4e34e08749d4576bc9571028150526/django/core/handlers/base.py#L24
 *
 
https://github.com/django/django/blob/51ed1ef1d56b383210830f69594b789ab3457b95/django/shortcuts/__init__.py#L151


 Here's my proposed patch in this case:
 https://github.com/django/django/pull/1670/files

-- 
Ticket URL: <https://code.djangoproject.com/ticket/21177>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/064.184c1e037f1152efa455fcae37a663dc%40djangoproject.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to