TheSunbathingCrow
TheSunbathingCrow

Reputation: 125

Django reverse for 'password_change_done' not found

I have a small application that I'm writing, but I have came into some trouble with the password changing elements used with the Django authentication framework. But I always get the error after changing a password that: Reverse for 'password_change_done' not found. 'password_change_done' is not a valid view function or pattern name. Here is my code below:

#account urls.py

from django.urls import path, include
from django.contrib.auth import views as auth_views
from . import views

app_name = 'account'

urlpatterns = [
    #Password Changes URLs
    path('password_change/', auth_views.PasswordChangeView.as_view(), name='password_change'),
    path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),

]

This is my directory structure for the login system: Directory Structure

Here's the password_change.html file:

<h3 style="text-align: center;">Change your password</h3>
<div class="login-form" style="text-align: center; ">
   <form method="post">
      {{ form.as_p }}
      <p><input type="submit" value="Change"></p>
      {% csrf_token %}
   </form>
 </div>

Any help would be greatly appreciated!

Upvotes: 4

Views: 471

Answers (1)

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 477437

Since you use an app_name, you will need to include the namespace in the success_url of the PasswordChangeView:

# account urls.py

from django.urls import path, include
from django.contrib.auth import views as auth_views
from . import views
from django.urls import reverse_lazy

app_name = 'account'

urlpatterns = [
    #Password Changes URLs
    path('password_change/', auth_views.PasswordChangeView.as_view(
        success_url=reverse_lazy('account:password_change_done')
    ), name='password_change'),
    path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
]

some other class-based views of the auth package have success_urls, these thus should be updated as well.

Upvotes: 4

Related Questions