Reputation: 8951
Somehow I've barely been able to find any information on this. I've found one tutorial here, but it's 4 years old, and doesn't seem to be much help. I've also gone through the Django Documentation, but it doesn't give a lot of example code.
I have set up my urls.py
:
from django.conf.urls import url
from . import views
from django.contrib.auth import views as auth_views
urlpatterns = [
url(r'^login/$', views.login_view, name='login'),
url(r'^password_reset/$', auth_views.password_reset, {'post_reset_redirect' : '/accounts/password_reset_done/'}, name='password_reset'),
url(r'^password_reset_done/$', auth_views.password_reset_done, name='password_reset_done'),
url(r'^password_reset/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', auth_views.password_reset_confirm, {'post_reset_redirect' : '/accounts/password_done/'}, name='password_reset_confirm'),
url(r'^password_done/$', auth_views.password_reset_complete, name='password_done'),
url(r'^auth/$', views.login_auth, name='login_auth'),
url(r'^register/$', views.register_user, name='register'),
url(r'^logout/$', views.logout_user, name='logout'),
]
From what I gather, unless I am using custom templates (which I haven't tried since I can't get the included Django version to work,) then everything is done in urls.py
.
I can get the reset_password
page to load fine:
But when I submit the form, I get the following error:
I just spent two hours fixing this exact same issue to get the reset_password
page to load, and now the same problem is happening, just in the reset_password_confirm
part. I've looked at a bunch of questions that address this exact error, but I have no idea what is causing the problem. Dealing with a few lines in urls.py
doesn't seem like it should be this hard...
Upvotes: 0
Views: 352
Reputation: 6130
This is what I have exactly from the docs and it works perfect.
url(r'^admin/', include(admin.site.urls), name='admin'), # admin interface
url(r'^login/', LoginView.as_view(), name='Login'), # for user login
url(r'^logout/', LogoutView.as_view(), name='Logout'), # logout
url(r'',include(admin.site.urls), name='admin'), # logout
url(r'^admin/password_reset/$', auth_views.password_reset, name='admin_password_reset'),
url(r'^admin/password_reset/done/$', auth_views.password_reset_done, name='password_reset_done'),
url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', auth_views.password_reset_confirm, name='password_reset_confirm'),
url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'),
Here is the link to the docs, hope it helps.
Upvotes: 0
Reputation: 2808
Update your urls.py with
url(r'^password_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' : '/accounts/password_done/'}, name='password_reset_confirm'),
From the log I can see that it expect uidb64
Upvotes: 2