Python NoReverseMatch at/user/password#u重置/反转';密码重置完成';找不到

Python NoReverseMatch at/user/password#u重置/反转';密码重置完成';找不到,python,django,django-authentication,Python,Django,Django Authentication,我正在尝试使用Django身份验证系统,但出现错误: “用户”是一个应用程序名称 项目的URL.py: from django.conf.urls import url, include from django.contrib import admin from django.conf import settings from django.conf.urls.static import static urlpatterns = [ url(r'^admin/', admin.s

我正在尝试使用Django身份验证系统,但出现错误:

“用户”是一个应用程序名称

项目的URL.py:

from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static


urlpatterns = [
     url(r'^admin/', admin.site.urls),
     ...
     url(r'^user/', include('user.urls', namespace='user')),
     ...
]
user/url.py:

from django.conf.urls import url, include

from . import views


urlpatterns = [
    url(r'^register/$', views.register, name='register'),
    url(r'^settings/$', views.settings, name='settings'),
    url(r'^settings/password/$', views.password, name='password'),
    url(r'^settings/accounts/$', views.configure_accounts,
        name='configure_accounts'),
    url(r'^settings/accounts/error/$', views.configure_accounts_error,
        name='configure_accounts_error'),
    url('^', include('django.contrib.auth.urls')),
]
我可以访问/user/login/,/user/logout/。当我进入/user/password\u reset/时,我可以输入电子邮件,按下“提交”按钮后,出现错误(如图所示):

有没有办法解决这个问题?
非常感谢。

在您的user/url.py中,您似乎没有url,名为
/user/password\u reset/

如果要使用django.auth默认密码重置,请使用

from django.contrib.auth.views import password_reset

urlpatterns = patterns('',
     (r'^/accounts/password/reset/$', password_reset,{'template_name': 'my_templates/password_reset.html'}, name='password_reset_done'),
     ...
)

您可以在这里更改模板名称。

在您的user/url.py中,似乎没有url,名为
/user/password\u reset/

url(r'^password_reset/$', auth_views.password_reset, {
        'post_reset_redirect': '/user/password_reset/done/'
    }, name='password_reset'),
    url(r'^password_reset/done/$', auth_views.password_reset_done,
        name='password_reset_done'),
    url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
        auth_views.password_reset_confirm, {
         'post_reset_redirect': '/user/reset/done/'
    }, name='password_reset_confirm'),
    url(r'^reset/done/$', auth_views.password_reset_complete,
        name='password_reset_complete'),
如果要使用django.auth默认密码重置,请使用

from django.contrib.auth.views import password_reset

urlpatterns = patterns('',
     (r'^/accounts/password/reset/$', password_reset,{'template_name': 'my_templates/password_reset.html'}, name='password_reset_done'),
     ...
)
您可以在此处更改模板名称。

url(r'^password\u reset/$),auth\u views.password\u reset{
url(r'^password_reset/$', auth_views.password_reset, {
        'post_reset_redirect': '/user/password_reset/done/'
    }, name='password_reset'),
    url(r'^password_reset/done/$', auth_views.password_reset_done,
        name='password_reset_done'),
    url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
        auth_views.password_reset_confirm, {
         'post_reset_redirect': '/user/reset/done/'
    }, name='password_reset_confirm'),
    url(r'^reset/done/$', auth_views.password_reset_complete,
        name='password_reset_complete'),
“post_reset_redirect”:“/user/password_reset/done/” },name='password_reset'), url(r“^password\u reset/done/$”,auth\u views.password\u reset\u done, name='password\u reset\u done'), url(r'^reset/(?P[0-9A-Za-z_ \-])/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$, 验证视图。密码重置确认{ “重置后重定向”:“/user/reset/done/” },name='password\u reset\u confirm'), url(r“^reset/done/$”,验证视图。密码重置完成, name='password\u reset\u complete',
我在user/url.py中设置了“post\u reset\u redirect”,一切都开始正常工作。在重置页面上提交电子邮件后,控制台中没有显示任何内容,原因如下:

如果系统中不存在提供的电子邮件地址,此视图将不会发送电子邮件,但用户也不会收到任何错误消息。这可以防止信息泄漏给潜在的攻击者

url(r'^password\u reset/$,auth\u views.password\u reset{
“post_reset_redirect”:“/user/password_reset/done/”
},name='password_reset'),
url(r“^password\u reset/done/$”,auth\u views.password\u reset\u done,
name='password\u reset\u done'),
url(r'^reset/(?P[0-9A-Za-z_ \-])/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$,
验证视图。密码重置确认{
“重置后重定向”:“/user/reset/done/”
},name='password\u reset\u confirm'),
url(r“^reset/done/$”,验证视图。密码重置完成,
name='password\u reset\u complete',
我在user/url.py中设置了“post\u reset\u redirect”,一切都开始正常工作。在重置页面上提交电子邮件后,控制台中没有显示任何内容,原因如下:

如果系统中不存在提供的电子邮件地址,此视图将不会发送电子邮件,但用户也不会收到任何错误消息。这可以防止信息泄漏给潜在的攻击者


我也遇到了这个问题。这些帖子已经过时了,所以我想给出一个修改后的答案。本质上,
PasswordResetConfirmView
具有
success\u url
属性,可以在
url.py
中设置该属性

比如说

path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
    template_name='password-reset-confirm.html', success_url=reverse_lazy(
        'user:password_reset_complete')),
     name="password_reset_confirm"),
path('password-reset-confirm//',auth_view.PasswordResetConfirmView.as_view(
模板\u name='password-reset-confirm.html',成功\u url=reverse\u(
“用户:密码重置完成”),
name=“密码重置确认”),

问题在于密码重置确认的默认行为。具体来说,它设置了
success\u url=reverse\u lazy('password\u reset\u complete')
。由于您的
密码\u重置\u完成
视图位于您的“用户”应用程序中,因此无法找到它。默认属性告诉它在需要查看
user/url.py
时查看根
url.py
。覆盖
success\u url将解决这个问题。

我也遇到了这个问题。这些帖子已经过时了,所以我想给出一个修改后的答案。本质上,
PasswordResetConfirmView
具有
success\u url
属性,可以在
url.py
中设置该属性

比如说

path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
    template_name='password-reset-confirm.html', success_url=reverse_lazy(
        'user:password_reset_complete')),
     name="password_reset_confirm"),
path('password-reset-confirm//',auth_view.PasswordResetConfirmView.as_view(
模板\u name='password-reset-confirm.html',成功\u url=reverse\u(
“用户:密码重置完成”),
name=“密码重置确认”),

问题在于密码重置确认的默认行为。具体来说,它设置了
success\u url=reverse\u lazy('password\u reset\u complete')
。由于您的
密码\u重置\u完成
视图位于您的“用户”应用程序中,因此无法找到它。默认属性告诉它在需要查看
user/url.py
时查看根
url.py
。覆盖
success\u url将解决此问题。

您看到了这个问题,并尝试了这些人的回答@是的,我试过了。但是我在settings.py中有
EMAIL\u BACKEND='django.core.mail.backends.console.EmailBackend'
。而且,当使用该解决方案时,在重置页面上提交电子邮件后,控制台中不会显示任何内容。然而,重定向是有效的。你看到了这个问题并尝试了他们的回答@是的,我试过了。但是我在settings.py中有
EMAIL\u BACKEND='django.core.mail.backends.console.EmailBackend'
。而且,当使用该解决方案时,在重置页面上提交电子邮件后,控制台中不会显示任何内容。然而,重定向是有效的。我得到了
ImportError:没有名为'django.conf.urls.defaults'的模块
在你安装的应用程序settings.py中注册'django.conf.urls.defaults'。那个家伙给出了另一个解决方案。但是,正如我所说,我在settings.py中有EMAIL_BACKEND='django.core.mail.backends.console.EmailBackend'。而且,当使用该解决方案时,在重置页面上提交电子邮件后,控制台中不会显示任何内容。然而,重定向是有效的。我得到了
ImportError:没有名为'django.conf.url.defaults'的模块。