Django2url具有相同的regex,但变量和视图不同

2024-09-29 19:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下网址:

url(r'^(?P<college_name>\w+)/$', views.detail, name="detail"),
url(r'^(?P<photographer_username>\w+)/$', views.photographer, name="photographer"),

当我输入/college_nameurl时,它可以工作,但是当输入website.com/johnsmith这样的摄影师时,它只搜索第一个url模式,然后停止。在

如果我把photographerurl模式放在第一位,它适用于摄影师,而不是大学。在

我如何修复它,使它对两者都有效?在


Tags: namecomurl模式usernamewebsiteviews网址
3条回答

您应该区分这两种url模式,否则后者总是被前者遮蔽。在

也许在这两个词前面加上一个独特的字符串:

url(r'^college/(?P<college_name>\w+)/$', views.detail, name="detail"),
url(r'^photographer/(?P<photographer_username>\w+)/$', views.photographer, name="photographer"),

正如其他人所说的,计算机无法自行决定选择哪个视图。最好的解决方案是有不同的路径,比如/photographer/和{}。在

如果您坚持两个视图使用相同的url方案,则需要告诉程序如何区分。在

Url定义:

url(r'^(?P<photographer_or_college>\w+)/$', photographer_or_college_view, name="photographer_or_college")

选择其中一个的视图:

^{pr2}$

不建议这样做,因为如果存在名称冲突,则会遇到问题。在

这怎么可能奏效?就像你说的,正则表达式是一样的。那么Django怎么知道你的意思呢?它不能,所以它只选第一个。在

解决这个问题的唯一方法是更改您的url,使它们不再只有名称:例如“/photograph/(?P\w+/$”等

相关问题 更多 >

    热门问题