2015-09-27 9 views
0

Я URL-адрес в моем urls.py следующим образом: -URL 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.

Если имя пользователя изменено на нормальное слово (не как адрес электронной почты), то URL-адрес работает нормально. Как я могу убедиться, что URL-адрес принимает адреса электронной почты в качестве имени пользователя?

ответ

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

Смежные вопросы