Django {%url%}当带有以下参数的网址时:url(r'^ foo / <parameter> / $',include(some.urls))</parameter>

时间:2012-11-22 23:11:57

标签: python django django-templates

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

urls.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%}?

2 个答案:

答案 0 :(得分:3)

是的,你可以这样得到你的网址: -

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

但请注意,您的网址配置应该是这样的: -

urls.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: -

urls.py

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

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

答案 1 :(得分:0)

好吧,我通常为包含的url设置名称空间以简化过程:

在root urlpatterns中

  

url(r'^ articles /',include('articles.urls',namespace ='articles')),

in articles / urls.py

  

url(r'^(\ d +)/ $','read',name ='read'),

     

url(r'^ publish / $','publish',name ='publish'),

然后在您的模板中,您只需键入:

  

{%url文章:阅读1%}

     

     

{%url articles:publish%}

有关此here的更多信息。