From 8251438cb8c1d47779e9fc33cfa84dad9851a774 Mon Sep 17 00:00:00 2001
From: Tim Graham <timograham@gmail.com>
Date: Sat, 15 Feb 2014 07:54:35 -0500
Subject: [PATCH] Moved relative URL handling added in refs #21177 to a better
 place.

Thanks apollo13: "reverse() shouldn't know about absolute/relative paths."
---
 django/core/urlresolvers.py | 4 ----
 django/shortcuts.py         | 6 ++++++
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index 8000300055..1dca15b4aa 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -383,10 +383,6 @@ class RegexURLResolver(LocaleRegexProvider):
         text_args = [force_text(v) for v in args]
         text_kwargs = dict((k, force_text(v)) for (k, v) in kwargs.items())
 
-        if isinstance(lookup_view, six.string_types):
-            # Handle relative URLs
-            if any(lookup_view.startswith(path) for path in ('./', '../')):
-                return lookup_view
         try:
             lookup_view = get_callable(lookup_view, True)
         except (ImportError, AttributeError) as e:
diff --git a/django/shortcuts.py b/django/shortcuts.py
index 17a860d87e..62560472c1 100644
--- a/django/shortcuts.py
+++ b/django/shortcuts.py
@@ -10,6 +10,7 @@ from django.db.models.base import ModelBase
 from django.db.models.manager import Manager
 from django.db.models.query import QuerySet
 from django.core import urlresolvers
+from django.utils import six
 
 
 def render_to_response(*args, **kwargs):
@@ -147,6 +148,11 @@ def resolve_url(to, *args, **kwargs):
     if hasattr(to, 'get_absolute_url'):
         return to.get_absolute_url()
 
+    if isinstance(to, six.string_types):
+        # Handle relative URLs
+        if any(to.startswith(path) for path in ('./', '../')):
+            return to
+
     # Next try a reverse URL resolution.
     try:
         return urlresolvers.reverse(to, args=args, kwargs=kwargs)