Reputation: 133
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
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