【问题标题】:django url parameters before include url with namespace包含名称空间的 url 之前的 django url 参数
【发布时间】:2012-11-27 02:32:04
【问题描述】:

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

现在我想使用相同的包含 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'),
    )

要获取我使用的模板中的 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 %}

我希望得到以下网址: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&lt;parameter_1&gt;%5Cd+)/bar/ 和 2./foo/(?P&lt;parameter_1&gt;%5d+)/bar/1

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

【问题讨论】:

    标签: django django-templates django-urls


    【解决方案1】:

    我再次搜索并找到了故障。 /django/core/urlresolvers.py 中有一个错误。

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

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

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

    【讨论】:

    • 有趣!我有同样的问题,发现这是 django 的反向方法中的一个错误。不幸的是,我的项目使用的是(痛苦的)旧版本的 Django(1.3)。我最终更改了 url 结构,因此父 urlconf 没有捕获任何参数。但是你知道解决这个问题的方法吗,这并不意味着更新到最新的 django 版本? (我想这是我最终会做的事情)
    猜你喜欢
    • 2018-07-12
    • 1970-01-01
    • 2018-07-20
    • 2012-12-02
    • 2016-04-15
    • 1970-01-01
    • 2016-12-18
    • 2019-08-22
    • 2015-02-04
    相关资源
    最近更新 更多