2015-09-27 114 views
0

我有一個網址,我urls.py如下: -Django中找不到網址

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

我的用戶名是一樣的我EMAILID,即[email protected]。當我瀏覽到http://127.0.0.1:8000/api/profile/[email protected]/時,它顯示404 Page not found

如果用戶名更改爲普通單詞(不像emailid),則URL正常工作。我如何確保URL將emailids作爲用戶名?

回答

0

你必須編輯匹配URL的正則表達式:

url(r'^api/profile/(?P<username>[@\.\w]+)/$', views.ProfileDetail.as_view()), 
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\[email protected]\._-]+)/$', views.ProfileDetail.as_view()), 
+0

你要逃避'.'和'+ '在你的正則表達式中:'[a-zA-Z0-9 \ + @ \ ._-]' – ahmed

+0

好的。編輯。 – AntiMS