我继承了一个 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 的正则表达式。
如果我使用 reverse('foo'),我会得到哪一个?
请您参考如下方法:
做一个快速测试,它返回了“最后一个”。你可以很容易地测试它。 在您的示例中,您有语法错误“。”在前两个模式之后代替“,”。 顺便说一句,你不应该在同一个应用程序中使用相同名称的 url,名称的想法是从应该代表 URL 的“唯一名称”获取 URL。 您可以在不同的应用程序中使用相同名称的 URL,然后使用“命名空间”参数进行反转。
例如:
.... url(r'^app1/', include('apps.app1.urls', namespace='app1', app_name='app1')), url(r'^app2/', include('apps.app2.urls', namespace='app2', app_name='app2')),
然后假设每个应用程序的 url.py 文件都包含一个 name="edit"条目,您可以这样做: reverse("app1:edit") --> app1/编辑/ reverse("app2:edit") --> app2/编辑/
玩得开心!
