很容易创建URL模式,如下所示
url(r'^member/(?P<member_name>[a-z]+)/$', views.get_member, name='get_member'),
这会生成完整的网址http://example.com/member/john/,但我想制作像http://example.com/john/这样的网址。我应该为此制作什么网址格式?如果我做
url(r'^(?P<member_name>[a-z]+)/$', views.get_member, name='get_member'),
它将开始匹配其中的所有其他网址。
答案 0 :(得分:3)
您正确添加url(r'^(?P<member_name>[a-z]+)/$', views.get_member, name='get_member')
等网址将匹配所有网址。重要的是URL出现的顺序。
在您的urls.py文件中,将您的get_member
网址放在urls.py网址列表的底部。
这样,它将是最后一个匹配的模式。
例如,以下网址格式将匹配:
史蒂夫/
urlpatterns = [
url(r'^articles/2003/$', views.special_case_2003),
url(r'^articles/([0-9]{4})/$', views.year_archive),
url(r'^(?P<member_name>[a-z]+)/$', views.get_member, name='get_member')
]
现在可能存在一些您可能会或可能不会注意到的问题。如果用户使用名称articles
加入您的网站,该怎么办? Url将匹配第一个url实例。这意味着“article
”用户永远无法访问该个人资料。
要解决此问题,您将不得不拥有一些无法使用的受限用户名。您还需要确保添加到站点中的任何新页面与已创建的用户名不冲突。