在我们的一个 Django 应用程序中,我们为 View 定义了多个 url。
第一个 URL 将一般特征与 pk 和第二个匹配组匹配。 第二个 URL 匹配一个带有 pk 的子特征。
在这两个 url 之间定义了更多的 url,所以一次看到它们并不容易。或者,例如,子功能将有自己的 url.py。
# old urls.py
url(r'^(?P<pk>\d+)/', views.b),
url(r'^subfeature/', views.a),
一段时间后 pk 中也允许使用字母,所以我们现在必须将 \d+ 更改为 [^/]+。
# new urls.py
url(r'^(?P<pk>[^/]+)/', views.b),
url(r'^subfeature/', views.a),
现在子特征因为 url 没有正确匹配而中断,'subfeature' 在第一个 url 中匹配为 pk。
如何在更改 url 正则表达式时避免破坏其他 url?
最佳答案
对此没有统一的答案。任何使 url 更通用的更改都可能破坏它后面的其他 url。
在这种情况下,您可以交换 url,这样 subfeature/
将匹配子功能 url,而任何其他 url 将失败并匹配 views.b
:
url(r'^subfeature/', views.a),
url(r'^(?P<pk>[^/]+)/', views.b),
关于python - 具有多个url匹配的Django url配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40023708/