我找不到任何解决方案,如何使用以下配置获取模板中的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%}?
答案 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的更多信息。