Opened 14 years ago

Closed 14 years ago

Last modified 13 years ago

#13052 closed (duplicate)

reverse() does not resolve correctly using namespaces in some cases

Reported by: trey@… Owned by: Florian Apolloner
Component: Uncategorized Version: dev
Severity: Keywords:
Cc: Florian Apolloner Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

When reversing a set of included urls with a url prefix which contains a parameter, the resolver will treat the url chunk before the include as a prefix and not process it.

from django.conf.urls.defaults import *

app1 = (patterns('',
    url(r'^edit/(?P<object_id>\d+)/$', 'view', name='view'),
    url(r'^list/$', 'view', name='list'),
), 'myapp', 'theinstance1')

app2 = (patterns('',
    url(r'^edit/(?P<object_id>\d+)/$', 'view', name='view'),
    url(r'^list/$', 'view', name='list'),
), 'myapp', 'theinstance2')


urlpatterns = patterns('views',
    url(r'^site/$', 'view', name='view'),
    url(r'^site/(?P<site_id>\d+)/pages/', include(app1)),
    url(r'^site/', include(app2)),
)



>>> from django.core.urlresolvers import reverse
>>> reverse('view')
'/site/'
>>> reverse('view', current_app='theinstance1')
'/site/'
>>> reverse('myapp:view', current_app='theinstance1')
'/site/(?P%3Csite_id%3E%5Cd+)/pages/list/'
>>> reverse('myapp:list', current_app='theinstance1')
'/site/(?P%3Csite_id%3E%5Cd+)/pages/list/'

Change History (3)

comment:1 by Florian Apolloner, 14 years ago

Cc: Florian Apolloner added
Owner: changed from nobody to Florian Apolloner
Status: newassigned

The problem starts here: http://code.djangoproject.com/browser/django/trunk/django/core/urlresolvers.py#L345 The extra part is just added to prefix, but it can contain parts which need to be reversed.

comment:2 by Russell Keith-Magee, 14 years ago

Resolution: duplicate
Status: assignedclosed

Duplicate of #11559

comment:3 by Jacob, 13 years ago

milestone: 1.2

Milestone 1.2 deleted

Note: See TracTickets for help on using tickets.
Back to Top