4

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

网址.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:

{% url bar-url parameter=1 parameter2=2 %}

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

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

4

2 回答 2

3

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

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

请注意,这$意味着正则表达式的结束。

于 2012-11-22T23:18:09.013 回答
0

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

在根 urlpatterns

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

在文章/urls.py

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

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

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

{% url 文章:阅读 1 %}

或者

{% 网址文章:发布 %}

更多关于这里的信息。

于 2012-11-23T00:17:45.237 回答