【发布时间】:2021-04-22 08:06:38
【问题描述】:
我正在使用PasswordResetView 重置密码,但是当我输入新密码并提交按钮时。 Django 重定向到这个
ulrs.py
from django.urls import path
from Authentication import views
from django.contrib.auth import views as auth_view
from .forms import *
app_name = 'Authentication'
urlpatterns = [
path('', views.loginpage, name='loginpage'),
path('login', views.handlelogin, name='login'),
path('logout', views.handlelogout, name='logout'),
path('password_reset', views.password_reset, name='password_reset'),
path('password_reset/done/',
auth_view.PasswordResetDoneView.as_view(template_name='Authentication_template/password_reset_done.html'),
name='password_reset_done'),
path('reset/<uidb64>/<token>/',
auth_view.PasswordResetConfirmView.as_view(template_name='Authentication_template/password_reset.html',
form_class=SetPasswordForm), name='password_reset_confirm'),
path('password_reset_complete/', auth_view.PasswordResetCompleteView.as_view(
template_name='Authentication_template/password_reset_complete.html'),
name='password_reset_complete')
]
这里我使用自定义视图向用户发送电子邮件。
【问题讨论】:
-
你设置了
app_name = 'Authentication'意味着你有命名空间这些url。所以你现在需要将它们称为Authentication:password_reset_complete而不是password_reset_complete等。参见URL namespaces (Django docs) -
@AbdulAzizBarkat 我知道命名空间的东西,但这里的问题是不同的,当我提交密码重置表单时,它必须重定向到
password_reset_complete/,但它给了我屏幕截图中的错误 -
问题是命名空间。您收到错误是因为视图本身尝试将 url 反转为
reverse_lazy('password_reset_complete')而相反,由于您的命名空间,它需要是reverse_lazy('Authentication:password_reset_complete')...
标签: python django django-views django-authentication