如果按照 .* 去匹配,最后会把 /edit/ 和 /delete/ 也匹配进去。
urlpatterns = [ #... url(r'^(?P<slug>.*)/$', post_detail, name='detail'), url(r'^(?P<slug>.*)/edit/$', post_update, name='update'), url(r'^(?P<slug>.*)/delete/$', post_delete), ]
所以使用 [-w+] 表示匹配 - 符号(短横线 hyphen),以及所有小写的英文字母。
urlpatterns = [ #... url(r'^(?P<slug>[-w]+)/$', post_detail, name='detail'), url(r'^(?P<slug>[-w]+)/edit/$', post_update, name='update'), url(r'^(?P<slug>[-w]+)/delete/$', post_delete), ]
参考: