【问题标题】:Can not be able to redirect to 'password_change_done'无法重定向到“password_change_done”
【发布时间】:2015-10-18 12:19:45
【问题描述】:

views.py:

@login_required
@csrf_protect
def password_change(request,
    template_name='password_change_form.html',
    password_change_form=PasswordChangeForm,):

    if request.method == 'POST':
        form = password_change_form(user=request.user, data=request.POST)
        if form.is_valid():
            form.save()
            update_session_auth_hash(request, form.user)
            return HttpResponseRedirect(reverse('student:password_change_done'))
    else:
        form = password_change_form(user=request.user)
    context = {
        'form': PasswordChangeForm,
        'title': _('Password change'),
        'current_app': 'student',
    }
    return TemplateResponse(request, template_name, context)

@login_required
def password_change_done(request,
    template_name='password_change_done.html',):

    context = {
        'title': _('Password change successful'),
    }
    return TemplateResponse(request, template_name, context)

我的 urls.py:

from django.conf.urls import url, patterns
from django.contrib.auth import views as auth_views
from . import views

urlpatterns = [
    url(r'^register/$', views.register, name='register'),
    url(r'^login/$', views.user_login, name='login'),
    url(r'^logout/$', views.user_logout, name='logout'),
    url(r'^password_change/$', auth_views.password_change, {'template_name': 'password_change_form.html'}, name="password_change"),
    url(r'^password_change/done/$', auth_views.password_change_done, {'template_name': 'password_change_done.html'}, name="password_change_done"),
    url(r'^restricted/', views.restricted, name='restricted'),
    url(r'^mains/', views.mains, name = 'mains'),
]

我的'password_change' 表单工作正常,但是当我单击提交按钮时,它会将我重定向到以下网址:- 'http://127.0.0.1:8000/stu/password_change/None' 尽管'http://127.0.0.1:8000/stu/password_change/done' 根据我的观点和网址预期。

我在哪里做错了吗?

请帮助我进入它?

谢谢!提前

【问题讨论】:

  • 在网址中添加 {'post_change_redirect' : '/path/to/url/',} 后一切正常...

标签: django django-views django-urls django-authentication


【解决方案1】:

您在您的password_change_done 中使用login_required decorator 这意味着您的用户必须经过身份验证才能访问该视图。 更改密码后,您将不再通过身份验证。在您的password_change 视图中,您必须在更改密码后验证并登录您的用户。

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-05
    • 1970-01-01
    • 2019-07-12
    • 2016-09-24
    • 2019-04-03
    相关资源
    最近更新 更多