最近正在练习Django基础,结果在做的时候发现网页点击链接以后URL变了但网页没有变。因为没有错误信息,不知道哪有问题。debug半天也没找出来。后来发现是正则表达式写的有问题。
urlpatterns = [
# 主页
url(r'^$', views.index, name='index'),
# 显示所有的主题
url(r'^topics/', views.topics, name='topics'),
# 特定主题的详细页面
url(r'topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
这里的显示所有主题的正则表达式查找的是除基础URL以外以“topics”开头的URL,但详细页面的URL,如topic/1/同样符合正则表达式,导致匹配到了显示所有主题的网页。
解决办法很简单,正则表达式里加入查看字符串末尾($符号)就可以解决。
urlpatterns = [
# 主页
url(r'^$', views.index, name='index'),
# 显示所有的主题
url(r'^topics/$', views.topics, name='topics'),
# 特定主题的详细页面
url(r'topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),