i’ve configured a seperate app to manage logins,logout, password change and reset…However after changing password at :
name= password_change
after password has been change it supposed to return page urlpattern name = password_change_done
but it keeps returning an error saying :
NoReverseMatch at /accounts/password-change
Reverse for ‘password_change_done’ not found. ‘password_change_done’ is not a valid view function or pattern name.
app_name = 'accounts'
path('password-change',views.PasswordChange.as_view(),name="password_change"),
path('password-change/done',views.PasswordChangeDone.as_view(),name="password_change_done"),
path('password-reset',views.PasswordReset.as_view(), name="password_reset"),
path('password-reset/done',views.PasswordResetDone.as_view(), name="password_reset_done"),
path('password-reset/confirm',views.PasswordResetConfirm.as_view(), name="password_reset_confirm"),
path('password-reset/complete',views.PasswordResetComplete.as_view(), name="password_reset_complete"),
By using the app_name
attribute, you have created a namespace for those urls, which needs to be specified when referencing those urls by name.
See the docs and examples at URL dispatcher | Django documentation | Django
Fixed the issue my registering no namespace
nor app_name
… However the page password_reset_complete
keeps returning this error : suggesting the namepace = accounts
isn’t registered but i don’t have it anywhere registered in the app.
Internal Server Error: /accounts/password-reset/complete
Traceback (most recent call last):
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\urls\base.py", line 71, in reverse
extra, resolver = resolver.namespace_dict[ns]
KeyError: 'accounts'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\views\generic\base.py", line 104, in view
return self.dispatch(request, *args, **kwargs)
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\views\generic\base.py", line 143, in dispatch
return handler(request, *args, **kwargs)
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\views\generic\base.py", line 226, in get
context = self.get_context_data(**kwargs)
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\contrib\auth\views.py", line 344, in get_context_data
context["login_url"] = resolve_url(settings.LOGIN_URL)
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\shortcuts.py", line 180, in resolve_url
return reverse(to, args=args, kwargs=kwargs)
File "c:\Users\USER\Desktop\DB\prohub\.venv\lib\site-packages\django\urls\base.py", line 82, in reverse
raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'accounts' is not a registered namespace
[09/Jul/2024 18:00:06] "GET /accounts/password-reset/complete HTTP/1.1" 500 96573
Are you using a system-provided template or a template that you have created for the view being called by the /accounts/password-reset/complete
url?
Please post your PasswordResetComplete
view and the template it is rendering.
views.py :
import django.contrib.auth.views as auth_views
class PasswordResetComplete(auth_views.PasswordResetCompleteView):
template_name = 'registration/password-reset/password-reset-complete.html'
template :
<head>
<title>Password reset complete</title>
</head>
<body>
<h3>Password set</h3>
<p>Your new password has been set <a href="{%url 'user_login' %}">login</a></p>
</body>
What is your LOGIN_URL
setting?
Forgotten i had the namespace accounts
registered to the LOGIN_URL
and LOGOUT_URL
pattern name.
The issue has been rectified now…Thanks alot Man