我的网址格式是
url('^auth/login/(?P<user_name>\w+)/(?P<password>\w+)/$', views.auth_login_from_device, name='login_from_device'),
当我调用localhost:8000 / auth / login / myname / 12345时,它非常好
但是当我打电话的时候 本地主机:8000/auth/login/me@mymail.com/12345 /
我明白了 找不到页(404) 请求方法:GET 请求网址:http://127.0.0.1:8000/auth/login/satya@prakash/12345/
当前网址,auth / login / satya @ prakash / 12345 /,并不匹配其中任何一个。
我的urls.py
urlpatterns = patterns('',
url('^$', views.auth_index, name='auth_index'),
url('^auth/login/$', views.auth_login, name='auth_login'),
url('^auth/login/(?P<user_name>\w+)/(?P<password>\w+)/$', views.auth_login_from_device, name='login_from_device'),
)
我错过了什么?提前谢谢。
答案 0 :(得分:4)
\w
中的(?P<user_name>\w+)
与@
符号不符。
最好使用[\w.@+-]+
,它与电子邮件中出现的其他几个字符相匹配。这是Django code
url('^auth/login/(?P<user_name>[\w.@+-]+)/...
请注意,在网址中输入密码是一个非常糟糕的主意!这意味着密码将保存在浏览器的历史记录,服务器日志等中。
答案 1 :(得分:1)
in
url('^auth/login/(?P<user_name>\w+)/(?P<password>\w+)/$'
您将user_name
视为\w+
,但\w+
未赢得@
试试这个:
url('^auth/login/(?P<user_name>\w+@\w+)/(?P<password>\w+)/$'
正则表达式中包含@