2

在我的最后一个问题中,我询问了如何在包含 urls.py 之前让 url 为参数工作,并且它起作用了。 Django {% url %} 当 url 带有以下参数时: url(r'^foo/<parameter>/$', include(some.urls))

现在我想将相同的包含 urls.py与 namespaces一起使用。

网址.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'),
    )

要获取模板中的 url,我使用:

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 %}

我希望得到 url: 1./foo/1/bar/和 2./foo/1/bar/1但它不起作用。

有趣:如果我打电话:

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

我得到了网址:1./foo/(?P<parameter_1>%5Cd+)/bar/和 2。/foo/(?P<parameter_1>%5d+)/bar/1

我的问题:我的代码有问题还是代码没有用,我想做什么。

4

1 回答 1

2

我再次搜索并发现了故障。中存在一个错误/django/core/urlresolvers.py

我在https://code.djangoproject.com/ticket/11559#no1找到了票。

要解决此问题,您必须使用https://github.com/django/django/commit/02dcbe3317/django/core/urlresolvers.py中更改的文件替换。

python manage.py runserver使用url-tags重新启动 def-server 后,解析正确。我/foo/1/bar/从而{% url foo:bar 1 %}不是/foo/(?P<parameter_1>%5Cd+)/bar/.

于 2012-12-11T10:18:46.513 回答