我继承了一个Django应用程序,在urls.py
中有这样的条目:
url(r'/abc$', 'app.views.foo', name='foo'),
url(r'/def$', 'app.views.foo', name='foo'),
url(r'^/something$|/other$', 'app.views.foo', name='foo'),
因此,我不仅有几个名为'foo'的url模式,而且某些模式还包含一个可以匹配多个不同URL的正则表达式。
如果我使用反向('foo'),我会得到哪一个?
答案 0 :(得分:6)
快速测试,它返回“最后一个”。你可以很容易地测试它。 在您的示例中,您有语法错误“。”在前2个模式之后,而不是“,”。 顺便说一句,你不应该在同一个APP中有同名的网址,名称的想法是从一个应该代表URL的“唯一名称”中获取一个URL。 您可以在不同的应用程序中使用相同名称的URL,并使用“namespace”参数来反转。
例如:
....
url(r'^app1/', include('apps.app1.urls', namespace='app1', app_name='app1')),
url(r'^app2/', include('apps.app2.urls', namespace='app2', app_name='app2')),
然后假设每个app的url.py文件包含name =“edit”条目,你可以这样做:
reverse("app1:edit") --> app1/edit/
reverse("app2:edit") --> app2/edit/
玩得开心!