未找到 Django URL

Django URL not found

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

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 可以正常工作。如何确保 url 将 emailids 作为用户名?

您的正则表达式不匹配电子邮件地址中的所有字符。 \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()),

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

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