Django的URL参数之前,包括与命名空间网址(django url parameters bef

2019-07-04 19:59发布

在我的最后一个问题,我问怎么弄网址参数包括前urls.py工作,它的工作。 Django的{%URL%}当与像参数的网址:URL(R '^富/ <参数> / $',包括(some.urls))

现在我想使用包括urls.py 与命名空间是相同的。

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'),
    )

为了获得在范本中的网址我使用:

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

我期望得到的网址: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

我的问题:我是不是有一个错误在我的代码或者是代码没有用的,我想做的事情。

Answer 1:

我再次搜查,发现故障。 有一个在错误/django/core/urlresolvers.py

我发现在售票https://code.djangoproject.com/ticket/11559#no1 。

为了解决这个问题,你必须更换/django/core/urlresolvers.py与改变的文件从https://github.com/django/django/commit/02dcbe3317 。

重新启动DEF-服务器后, python manage.py runserver链接标签被解析正确。 我得到/foo/1/bar/{% url foo:bar 1 %} ,而不是/foo/(?P<parameter_1>%5Cd+)/bar/



文章来源: django url parameters before include url with namespace