我遇到了一个奇怪的问题,虽然我现在已经找到了一个解决方案,但我认为了解是什么导致了错误是有帮助的。我在Django项目中有一个应用程序,URL如下所示:
urlpatterns = patterns('',
url(r'^$', UserProfileListView.as_view(),
name='userprofile_list'),
url(r'^(?P<username>[\w.@+-_]+)/changepassword/$',
password_change, name='change_password'),
url(r'^(?P<username>[\w.@+-_]+)/$',
profile_detail,
name='userprofile_detail'),
)
当我指向浏览器更改密码时,一切正常。但是,我的URL排序如下:
urlpatterns = patterns('',
url(r'^$', UserProfileListView.as_view(),
name='userprofile_list'),
url(r'^(?P<username>[\w.@+-_]+)/$',
profile_detail,
name='userprofile_detail'),
url(r'^(?P<username>[\w.@+-_]+)/changepassword/$',
password_change, name='change_password'),
)
由于视图接收到username=username/changepassword而不是username=username,因此我得到了一个404页未找到的错误
以这种方式解释url的原因是什么?为什么它在第一个实例中起作用?你知道吗
丹·克拉森的评论就是答案。只需详细说明一下,您可以通过测试regexp轻松发现:
FWIW问题出在
\w
说明符上,该说明符可能不能完全满足您的期望:相关问题 更多 >
编程相关推荐