pharfe
pharfe

Reputation: 133

django url parameters before include url with namespace

In my last question I asked how to get urls working for parameter before included urls.py and it worked. Django {% url %} when urls with parameters like: url(r'^foo/<parameter>/$', include(some.urls))

Now I want to use the same included urls.py with namespaces.

urls.py

urlpatterns = patterns('',
    url(r'^/foo/(?P<parameter_1>\d+)/', include('bar.urls', namespace='foo', app_name='foo')),
    )

bar.urls.py

urlpatterns = patterns('',
    url(r'^/bar/$', 'bar.views.index', name='bar'),
    url(r'^/bar/(?P<parameter_2>\d+)/$', 'bar.views.detail', name='bar_detail'),
    )

To get the url in template I use:

1. {% url foo:bar parameter_1=1 %} or {% url for:bar 1 %}
2. {% url foo:bar_detail parameter_1=1 parameter_2=1 %} or {% url foo:bar_detail 1 1 %}

I expect to get the url: 1. /foo/1/bar/ and 2. /foo/1/bar/1 but it does not work.

Interesting: if I call:

1. {% url foo:bar %}
2. {% url foo:bar_detail parameter_2=1 %} or {% url foo:bar_detail 1 %}

I get the urls: 1. /foo/(?P<parameter_1>%5Cd+)/bar/ and 2. /foo/(?P<parameter_1>%5d+)/bar/1

My question: Did i have a fault in my code or is the code not useful for, what i want to do.

Upvotes: 2

Views: 2413

Answers (1)

pharfe
pharfe

Reputation: 133

I searched again and found the fault. There's a bug in the /django/core/urlresolvers.py.

I found the ticket at https://code.djangoproject.com/ticket/11559#no1.

To fix the problem you have to replace the /django/core/urlresolvers.py with the changed file from https://github.com/django/django/commit/02dcbe3317.

After restarting the def-server with python manage.py runserver the url-tags are resolved correct. I get /foo/1/bar/ from {% url foo:bar 1 %} instead of /foo/(?P<parameter_1>%5Cd+)/bar/.

Upvotes: 2

Related Questions