首页 文章

Django密码重置没有反向匹配

提问于
浏览
-1

我正在尝试使用django的密码重置

输入密码重置电子邮件后,我收到以下错误

django.urls.exceptions.NoReverseMatch:未找到'password_reset_confirm'的反向 . 'password_reset_confirm'不是有效的视图函数或模式名称 .

我的urls.py包括

path(
        "dashboard/",
        include(("ami.dashboard.urls", "dashboard"), namespace="dashboard"),
    ),

我的仪表板/ urls.py是

from django.conf.urls import include, url
# from graphene_django.views import GraphQLView

# from django.contrib import admin
from django.contrib.auth import views as auth_views
from . import views as core_views
from .product.urls import urlpatterns as product_urls

urlpatterns = [

    url(r'^$', core_views.index, name='index'),
    url(r'^products/', include(product_urls)),
    # url(r'^login/$', auth_views.login, name='login'),
    url(r'^login/$', auth_views.login, {'template_name': 'dashboard/login.html'}, name='login'),
    url(r'^logout/$', auth_views.logout, {'next_page': '/'}, name='logout'),
    # url(r'^logout/$', auth_views.logout, name='logout'),
    # url(r'^admin/', admin.site.urls),
    url(r'^', include('django.contrib.auth.urls')),
    url(r'^password_reset/$', auth_views.password_reset, {
        'post_reset_redirect': '/dashboard/password_reset/done/'
        , 'template_name': 'registration/password_reset_form.html'},
        name='password_reset'),
    url(r'^password_reset/done/$', auth_views.password_reset_done,
        {'template_name': 'registration/password_reset_done.html'}, 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, {'template_name': 'registration/password_reset_confirm.html'},
        name='password_reset_confirm'),
    url(r'^reset/done/$', auth_views.password_reset_complete,
        {'template_name': 'registration/password_reset_complete.html'},
        name='password_reset_complete'),
]

错误回溯:

文件“/usr/local/lib/python3.6/site-packages/django/contrib/staticfiles/handlers.py”,第66行,在调用return self.application(environ,start_response)文件“/ usr / local / lib / python3.6 / site-packages / django / core / handlers / wsgi.py“,第146行,在调用响应= self.get_response(request)文件”/usr/local/lib/python3.6/site-packages /django/core/handlers/base.py“,第81行,在get_response response = self._middleware_chain(request)File”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception . py“,第37行,在内部响应= response_for_exception(request,exc)文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py“,第87行,在response_for_exception响应中= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info())文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第122行,in handle_uncaught_exception返回debug.technical_500_response(request,* exc_info)文件“/usr/local/lib/python3.6/site-pack age / django_extensions / management / technical_response.py“,第6行,在null_technical_500_response six.reraise(exc_type,exc_value,tb)文件”/usr/local/lib/python3.6/site-packages/six.py“,第693行,重新提升值文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第35行,内部响应= get_response(请求)文件“/ usr / local /lib/python3.6/site-packages/django/utils/deprecation.py“,第95行,在调用响应= self.get_response(request)文件”/usr/local/lib/python3.6/site-packages/ django / core / handlers / exception.py“,第37行,内部响应= response_for_exception(request,exc)文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py “,第87行,在response_for_exception响应= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info())文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception .py“,第122行,在handle_uncaught_exception中返回debug.technical_500_response(请求,* exc_info)文件“/usr/local/lib/python3.6/site-packages/django_extensions/management/technical_response.py”,第6行,null_technical_500_response six.reraise(exc_type,exc_value,tb)文件“/ usr / local / lib / python3.6 / site-packages / six.py“,第693行,重新加注值文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py “,第35行,内部响应= get_response(请求)文件”/usr/local/lib/python3.6/site-packages/django/utils/deprecation.py“,第95行,在呼叫响应中= self.get_response(请求)文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第37行,内部响应= response_for_exception(request,exc)文件“/ usr / local / lib / python3.6 / site-packages / django / core / handlers / exception.py“,第87行,在response_for_exception响应= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info())文件”/ usr /在handle_uncaught_中的local / lib / python3.6 / site-packages / django / core / handlers / exception.py“,第122行异常返回debug.technical_500_response(request,* exc_info)文件“/usr/local/lib/python3.6/site-packages/django_extensions/management/technical_response.py”,第6行,null_technical_500_response six.reraise(exc_type,exc_value, tb)文件“/usr/local/lib/python3.6/site-packages/six.py”,第693行,重新加注值文件“/usr/local/lib/python3.6/site-packages/django/ core / handlers / exception.py“,第35行,在内部响应= get_response(请求)文件”/usr/local/lib/python3.6/site-packages/django/utils/deprecation.py“,第95行,在call response = self.get_response(request)文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第37行,内部响应= response_for_exception(request,exc)文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第87行,在response_for_exception响应= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info( ))文件“/usr/local/lib/python3.6/site-packages/django/core/ handle_uncaught_py“,第122行,在handle_uncaught_exception中返回debug.technical_500_response(request,* exc_info)文件”/usr/local/lib/python3.6/site-packages/django_extensions/management/technical_response.py“,第6行,在null_technical_500_response six.reraise(exc_type,exc_value,tb)文件“/usr/local/lib/python3.6/site-packages/six.py”,第693行,在重新加注值文件“/ usr / local / lib /python3.6/site-packages/django/core/handlers/exception.py“,第35行,内部响应= get_response(请求)文件“/usr/local/lib/python3.6/site-packages/django/utils/deprecation.py”,第95行,在调用响应中= self.get_response(request)文件“/usr/local/lib/python3.6 /site-packages/django/core/handlers/exception.py“,第37行,内部响应= response_for_exception(request,exc)文件”/usr/local/lib/python3.6/site-packages/django/core/ handlers / exception.py“,第87行,在response_for_exception响应= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info())文件”/usr/local/lib/python3.6/site-packages/django/ core / handlers / exception.py“,第122行,在handle_uncaught_exception中返回debug.technical_500_response(request,* exc_info)文件”/usr/local/lib/python3.6/site-packages/django_extensions/management/technical_response.py“,第6行,在null_technical_500_response six.reraise(exc_type,exc_value,tb)文件“/usr/local/lib/python3.6/site-packages/six.py”,第693行,在重新加注值文件“/ usr / local /lib/python3.6/site-packages/django/core/handlers/exception.py“,lin e 35,内部响应= get_response(请求)文件“/usr/local/lib/python3.6/site-packages/django/utils/deprecation.py”,第95行,在呼叫响应中= self.get_response(request)文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第37行,内部响应= response_for_exception(request,exc)文件“/ usr / local / lib / python3.6 / site-packages / django / core / handlers / exception.py“,第87行,在response_for_exception响应= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info())文件”/ usr / local / lib / python3.6 / site-packages / django / core / handlers / exception.py“,第122行,在handle_uncaught_exception中返回debug.technical_500_response(request,* exc_info)文件”/usr/local/lib/python3.6/site -packages / django_extensions / management / technical_response.py“,第6行,在null_technical_500_response six.reraise(exc_type,exc_value,tb)文件”/usr/local/lib/python3.6/site-packages/six.py“,行693,重新加注值文件“/usr/local/lib/python3.6/ site-packages / django / core / handlers / exception.py“,第35行,内部响应= get_response(请求)文件”/usr/local/lib/python3.6/site-packages/django/utils/deprecation.py “,第95行,在呼叫响应中= self.get_response(请求)文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py“,第37行,内部响应= response_for_exception(request,exc)文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第87行,在response_for_exception响应中= handle_uncaught_exception(request,get_resolver(get_urlconf() ),sys_exc_info())文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第122行,在handle_uncaught_exception中返回debug.technical_500_response(request,* exc_info) )文件“/usr/local/lib/python3.6/site-packages/django_extensions/management/technical_response.py”,第6行,在null_technical_500_response six.reraise(exc_type,exc_value,tb)文件“/ usr / local / lib /python3.6/site-packages/six.py“,第693行,i n重新提升值文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第35行,内部响应= get_response(请求)文件“/ usr / local / lib / python3.6 / site-packages / django / utils / deprecation.py“,第95行,在调用响应中= self.get_response(request)文件”/usr/local/lib/python3.6/site-packages/django / core/handlers/exception.py“,第37行,内部响应= response_for_exception(request,exc)文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py“ ,第87行,在response_for_exception响应= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info())文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception . py“,第122行,在handle_uncaught_exception中返回debug.technical_500_response(request,* exc_info)文件”/usr/local/lib/python3.6/site-packages/django_extensions/management/technical_response.py“,第6行,null_technical_500_response六.reraise(exc_type,exc_value,tb)文件“/ usr / l ocal / lib / python3.6 / site-packages / six.py“,第693行,重新加注值文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py “,第35行,内部响应= get_response(请求)文件”/usr/local/lib/python3.6/site-packages/django/utils/deprecation.py“,第95行,在呼叫响应中= self.get_response(请求)文件“/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py”,第37行,内部响应= response_for_exception(request,exc)文件“/ usr / local / lib / python3.6 / site-packages / django / core / handlers / exception.py“,第87行,在response_for_exception响应= handle_uncaught_exception(request,get_resolver(get_urlconf()),sys.exc_info())文件”/ usr / local / lib / python3.6 / site-packages / django / core / handlers / exception.py“,第122行,在handle_uncaught_exception中返回debug.technical_500_response(request,* exc_info)文件”/usr/local/lib/python3.6 /site-packages/django_extensions/management/technical_response.py“,第6行,innull_technical_500_response six.reraise(exc_type,exc_value,tb)文件“/usr/local/lib/python3.6/site-packages/six.py”,第693行,在重新加注值文件“/ usr / local / lib / python3 .6 / site-packages / django / core / handlers / exception.py“,第35行,内部响应= get_response(请求)文件”/usr/local/lib/python3.6/site-packages/django/core/ handlers / base.py“,第128行,在_get_response response = self.process_exception_by_middleware(e,request)文件”/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py“,第126行,在_get_response response = wrapped_callback(request,* callback_args,** callback_kwargs)文件“/usr/local/lib/python3.6/contextlib.py”,第52行,内部返回函数(* args,** kwds )文件“/usr/local/lib/python3.6/site-packages/django/views/generic/base.py”,第69行,在视图中返回self.dispatch(request,* args,** kwargs)File“ /usr/local/lib/python3.6/site-packages/django/utils/decorators.py“,第62行,在_wrapper中返回bound_func(* args,** kwargs)文件”/ usr / local /lib/python3.6/site-packages/django/utils/decorators.py“,第142行,在_wrapped_view response = view_func(request,* args,** kwargs)文件”/usr/local/lib/python3.6 /site-packages/django/utils/decorators.py“,第58行,在bound_func中返回func.get(self,type(self))(* args2,** kwargs2)文件”/ usr / local / lib / python3 . 6 / site-packages / django / contrib / auth / views.py“,第407行,在dispatch返回super() . dispatch(* args,** kwargs)文件”/usr/local/lib/python3.6/site -packages / django / views / generic / base.py“,第89行,在调度返回处理程序(request,* args,** kwargs)文件”/usr/local/lib/python3.6/site-packages/django/ views / generic / edit.py“,第142行,在帖子中返回self.form_valid(form)文件”/usr/local/lib/python3.6/site-packages/django/contrib/auth/views.py“,line 420,在form_valid form.save(** opts)文件“/usr/local/lib/python3.6/site-packages/django/contrib/auth/forms.py”,第297行,在保存电子邮件中,html_email_template_name = html_email_template_name ,文件“/usr/local/lib/python3.6/site-packages/dja ngo / contrib / auth / forms.py“,第244行,在send_mail中= loader.render_to_string(email_template_name,context)文件”/usr/local/lib/python3.6/site-packages/django/template/loader.py “,第62行,在render_to_string中返回template.render(context,request)文件”/usr/local/lib/python3.6/site-packages/django/template/backends/django.py“,第61行,在渲染中返回self.template.render(context)文件“/usr/local/lib/python3.6/site-packages/django/template/base.py”,第175行,在渲染中返回self._render(context)文件“/ usr /local/lib/python3.6/site-packages/django/test/utils.py“,第98行,在instrumented_test_render中返回self.nodelist.render(context)文件”/usr/local/lib/python3.6/site -packages / django / template / base.py“,第943行,在render bit = node.render_annotated(context)文件”/usr/local/lib/python3.6/site-packages/django/template/base.py“ ,第910行,在render_annotated中返回self.render(context)文件“/usr/local/lib/python3.6/site-packages/django/template/defaulttags.py”,第37行,i n render output = self.nodelist.render(context)File“/usr/local/lib/python3.6/site-packages/django/template/base.py”,第943行,在render bit = node.render_annotated(context) )文件“/usr/local/lib/python3.6/site-packages/django/template/base.py”,第910行,在render_annotated中返回self.render(context)文件“/ usr / local / lib / python3 . 6 / site-packages / django / template / defaulttags.py“,第447行,在渲染中url = reverse(view_name,args = args,kwargs = kwargs,current_app = current_app)文件”/usr/local/lib/python3.6 /site-packages/django/urls/base.py“,第88行,反向返回iri_to_uri(resolver._reverse_with_prefix(view,prefix,* args,** kwargs))文件”/usr/local/lib/python3.6 /site-packages/django/urls/resolvers.py“,第632行,在_reverse_with_prefix中

1 回答

  • 1

    您正在为您所包含的网址指定名称空间 - “信息中心”:

    include(("ami.dashboard.urls", "dashboard"), namespace="dashboard"),
    

    在这种情况下,您需要在撤消URL时包含命名空间,请尝试:

    reverse('dashboard:password_reset_confirm')
    

    在模板中,您将使用:

    {% url 'dashboard:password_reset_confirm' %}
    

    Django文档中的更多信息:Reversing namespaced URLs

相关问题