Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.5k views
in Technique[技术] by (71.8m points)

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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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/.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...