我正在使用自定义html处理我的注册密码重置区域,因此覆盖了Django的密码重置页面。
重设密码初始链接可以正常工作,并重定向到我的自定义URL:
dependencies {
...
test "org.grails:grails-datastore-test-support:1.0.2-grails-2.4"
runtime "com.h2database:h2:1.4.196"
}
用户可以输入其电子邮件地址,然后单击“提交”以接收密码重置电子邮件。显示的下一页应该是
/account/reset-password/
但是,当他们单击提交时,我可以从命令行看到:
/account/reset-password/done/
第二行应该转到
POST /account/reset-password/ HTTP/1.1" 302 0
GET /password_reset/done/ HTTP/1.1" 302 0
GET /account/login/ HTTP/1.1" 200 2237
不是
/account/reset-password/done/
urls.py
/password_reset/done/
settings.py
app_name='accounts'
from django.conf.urls import url
from . import views
from django.contrib.auth.views import LoginView, LogoutView, PasswordResetView, PasswordResetDoneView, PasswordResetConfirmView, PasswordResetCompleteView
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^login/$', LoginView.as_view(template_name='accounts/login.html'), name='login'),
url(r'^logout/$', LogoutView.as_view(template_name='accounts/logout.html'), name='logout'),
url(r'^register/$', views.register, name='register'),
url(r'^profile/$', views.view_profile, name='view_profile'),
url(r'^profile/edit$', views.edit_profile, name='edit_profile'),
url(r'^change-password/$', views.change_password, name='change_password'),
url(r'^reset-password/$',
PasswordResetView.as_view(template_name='accounts/reset_password.html'),
{'post_reset_redirect': 'accounts:reset_password_done',
'email_template_name': 'accounts/reset_password_email.html'},
name='reset_password'),
url(r'^reset-password/done/$',
PasswordResetDoneView.as_view(template_name='accounts/reset_password_done.html'),
name='reset_password_done'),
url(r'^reset-password/confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>,+)/$',
PasswordResetConfirmView.as_view(template_name='accounts/reset_password_confirm.html'),
name='reset_password_confirm'),
url(r'^reset-password/complete/$',
PasswordResetConfirmView.as_view(template_name='accounts/reset_password_complete.html'),
name='reset_password_complete'),
]
middleware.py
INSTALLED_APPS = [
'accounts',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
答案 0 :(得分:2)
您可以在PasswordResetView中设置success_url
url(r'^reset-password/$',
PasswordResetView.as_view(template_name='accounts/reset_password.html'),
{
'email_template_name': 'accounts/reset_password_email.html',
'success_url' : reverse_lazy('accounts:reset_password_done')
},
name='reset_password'),
或者您可以在success_url
中直接传递.as_view()
url(r'^reset-password/$',
PasswordResetView.as_view(template_name='accounts/reset_password.html',
email_template_name = 'accounts/reset_password_email.html',
success_url = reverse_lazy('accounts:reset_password_done')) ,
name='reset_password'),