mirror of
https://github.com/django/django.git
synced 2025-10-24 14:16:09 +00:00
[1.1.X] Fixed #5034 -- honor request.urlconf in reverse and resolve.
This enables {% url %} to honor request.urlconf set from process_request
middleware methods.
Thanks SmileyChris for the initial patch work.
Backport of [11740] from trunk
git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.1.X@11741 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -16,11 +16,16 @@ ImproperlyConfigured: The included urlconf regressiontests.urlpatterns_reverse.n
|
||||
|
||||
import unittest
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.urlresolvers import reverse, resolve, NoReverseMatch, Resolver404
|
||||
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
|
||||
from django.shortcuts import redirect
|
||||
from django.test import TestCase
|
||||
|
||||
import urlconf_outer
|
||||
import urlconf_inner
|
||||
import middleware
|
||||
|
||||
test_data = (
|
||||
('places', '/places/3/', [3], {}),
|
||||
('places', '/places/3/', ['3'], {}),
|
||||
@@ -239,3 +244,35 @@ class NamespaceTests(TestCase):
|
||||
self.assertEquals('/other1/inner/37/42/', reverse('nodefault:urlobject-view', args=[37,42], current_app='other-ns1'))
|
||||
self.assertEquals('/other1/inner/42/37/', reverse('nodefault:urlobject-view', kwargs={'arg1':42, 'arg2':37}, current_app='other-ns1'))
|
||||
|
||||
|
||||
class RequestURLconfTests(TestCase):
|
||||
def setUp(self):
|
||||
self.root_urlconf = settings.ROOT_URLCONF
|
||||
self.middleware_classes = settings.MIDDLEWARE_CLASSES
|
||||
settings.ROOT_URLCONF = urlconf_outer.__name__
|
||||
|
||||
def tearDown(self):
|
||||
settings.ROOT_URLCONF = self.root_urlconf
|
||||
settings.MIDDLEWARE_CLASSES = self.middleware_classes
|
||||
|
||||
def test_urlconf(self):
|
||||
response = self.client.get('/test/me/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.content, 'outer:/test/me/,'
|
||||
'inner:/inner_urlconf/second_test/')
|
||||
response = self.client.get('/inner_urlconf/second_test/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
response = self.client.get('/second_test/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
||||
def test_urlconf_overridden(self):
|
||||
settings.MIDDLEWARE_CLASSES += (
|
||||
'%s.ChangeURLconfMiddleware' % middleware.__name__,
|
||||
)
|
||||
response = self.client.get('/test/me/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
response = self.client.get('/inner_urlconf/second_test/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
response = self.client.get('/second_test/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertEqual(response.content, 'outer:,inner:/second_test/')
|
||||
|
||||
Reference in New Issue
Block a user