未找到Django网址

时间:2015-09-27 16:46:05

标签: python django django-urls

我的urls.py中有一个网址如下: -

url(r'^api/profile/(?P<username>\w+)/$', views.ProfileDetail.as_view()),

我的用户名与我的emailid相同,即something@gmail.com。当我浏览http://127.0.0.1:8000/api/profile/something@gmail.com/时,它会显示404 Page not found

如果用户名更改为普通单词(不像emailid),则网址正常。如何确保url将emailids作为用户名?

2 个答案:

答案 0 :(得分:0)

您的正则表达式与电子邮件地址中的所有字符都不匹配。 \w匹配字符a-z,A-Z,0-9和下划线。电子邮件地址包括@和。,两者都不匹配。

您需要更改正则表达式以匹配有效的电子邮件地址。 Django有一些内置的电子邮件地址正则表达式,但它们非常复杂。 https://github.com/django/django/blob/master/django/core/validators.py#151如果你想看看他们喜欢什么。

出于您的目的,以下内容可能就足够了:

url(r'^api/profile/(?P<username>[a-zA-Z0-9\+@\._-]+)/$', views.ProfileDetail.as_view()),

答案 1 :(得分:0)

您必须编辑匹配网址正则表达式:

 url(r'^api/profile/(?P<username>[@\.\w]+)/$', views.ProfileDetail.as_view()),