具有相同 URL 结构的 2 个视图的 Django URL 模式匹配不正确?
Incorrect Django URL pattern match for 2 views with the same URL structure?
我在 Django 中有两个 url 模式:
urlpatterns += patterns('',
url(r'^(?P<song_name>.+)-(?P<dj_slug>.+)-(?P<song_id>.+)/$', songs.dj_song, name='dj_song'),
url(r'^(?P<song_name>.+)-(?P<artist_slug>.+)-(?P<song_id>.+)/$', songs.trending_song, name='trending_song'),
)
当我访问第一个模式的 URL 时,它正确打开了它。但是,如果我尝试访问第二个模式的 URL,它会再次尝试访问第一个视图。变量 song_name
、dj_slug
、artist_slug
是字符串,song_id
是整数。
对于具有类似 URL 结构的这种情况,URL 模式应该是什么?
两个 url 使用相同的正则表达式。我删除了组名并得到:
url(r'^(.+)-(.+)-(.+)/$', songs.dj_song, name='dj_song'),
url(r'^(.+)-(.+)-(.+)/$', songs.trending_song, name='trending_song'),
django当然使用第一个匹配。
您应该针对不同的视图使用不同的 url。例如将前缀添加到第二个 url:
url(r'^trending/(?P<song_name>.+)-(?P<artist_slug>.+)-(?P<song_id>.+)/$',
songs.trending_song, name='trending_song'),
我在 Django 中有两个 url 模式:
urlpatterns += patterns('',
url(r'^(?P<song_name>.+)-(?P<dj_slug>.+)-(?P<song_id>.+)/$', songs.dj_song, name='dj_song'),
url(r'^(?P<song_name>.+)-(?P<artist_slug>.+)-(?P<song_id>.+)/$', songs.trending_song, name='trending_song'),
)
当我访问第一个模式的 URL 时,它正确打开了它。但是,如果我尝试访问第二个模式的 URL,它会再次尝试访问第一个视图。变量 song_name
、dj_slug
、artist_slug
是字符串,song_id
是整数。
对于具有类似 URL 结构的这种情况,URL 模式应该是什么?
两个 url 使用相同的正则表达式。我删除了组名并得到:
url(r'^(.+)-(.+)-(.+)/$', songs.dj_song, name='dj_song'),
url(r'^(.+)-(.+)-(.+)/$', songs.trending_song, name='trending_song'),
django当然使用第一个匹配。
您应该针对不同的视图使用不同的 url。例如将前缀添加到第二个 url:
url(r'^trending/(?P<song_name>.+)-(?P<artist_slug>.+)-(?P<song_id>.+)/$',
songs.trending_song, name='trending_song'),