我没有找到任何解决方案,如何使用以下配置(使用 Django1.3)在模板中获取 url:

网址.py

urlpatterns = patterns('',
    url(r'^/foo/(?P<parameter>\d+)/$', include('bar.urls'), name='foo-url'),
    )

包括 url-conf:

bar.urls.py
urlpatterns = patterns('',
    (r'^/bar/$', 'bar.views.index'),
    url(r'^/bar/(?P<parameter2>\d+)/$', 'bar.views.detail', name='bar-url'),
    )

bar.views.py
def detail(request, parameter, parameter2):
    obj1 = Foo.objects.get(id=parameter)
    obj2 = Bar.objects.get(id=parameter2)

现在我尝试通过以下方式获取模板中的网址:
{% url bar-url parameter=1 parameter2=2 %}

我希望得到: /bar/1/foo/2/

在这种情况下可以使用 {% url %} 吗?

最佳答案

是的,您可以像这样获取您的网址:-

{% url 'bar-url' 1 2 %}

但请注意,您的 url 配置实际上应该是这样的:-

网址.py
urlpatterns = patterns('',
    url(r'^/foo/(?P<parameter>\d+)/, include('bar.urls')),
)

bar.urls.py
urlpatterns = patterns('',
    (r'^/bar/$, 'bar.views.index'),
    url(r'^/bar/(?P<parameter2>\d+)/$, 'bar.views.detail', name='bar-url'),
)

除非您专门映射,否则没有 foo-url:-

网址.py
urlpatterns = patterns('',
    url(r'^/foo/(?P<parameter>\d+)/$, 'another.views.foo', name='foo'),
    url(r'^/foo/(?P<parameter>\d+)/, include('bar.urls')),
)

请注意,$ 表示正则表达式的结尾。

关于python - Django {% url %} 当带有 : url(r'^foo/<parameter>/$', include(some.urls)) 等参数的 url 时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13521172/

10-15 16:18