首页 > 解决方案 > 更改密码后显示确认消息

问题描述

用户成功更改密码后,我将用户保留在名为 password_change 的同一页面上。

网址.py

path('password_change/', auth_views.PasswordChangeView.as_view(success_url=reverse_lazy('password_change')), name='password_change'),

我尝试使用消息框架:

视图.py

def password_change(request):
    password_form = PasswordChangeForm(instance = request.user, data = request.POST)
    if request.method == 'POST':
        if password_form.is_valid():
            password_form.save()
            update_session_auth_hash(request, password_form.user)  # <-- keep the user loged after password change
            messages.success(request, 'Your password has been updated', extra_tags='safe')
    return render(request, 'registration/password_change_form.html', {'password_form': password_form})

在我的 html 中有这个:

            {% if messages %}
                {% for message in messages %}
                    <p class='{{ message.tags }}'>{{ message }}</p>
                {% endfor %}
            {% endif %}

我试过了:

视图.py

def password_change(request):
    success = False;
    password_form = PasswordChangeForm(instance = request.user, data = request.POST)
    if request.method == 'POST':
        if password_form.is_valid():
            password_form.save()
            update_session_auth_hash(request, password_form.user)  # <-- keep the user loged after password change
            success = True;
    return render(request, 'registration/password_change_form.html', {'password_form': password_form, 'success': success})

在我的 html 中:

            {% if success %}
                <div>Password changed !!!</div>
            {% endif %}

密码已更改,但我无法显示消息来庆祝这一美妙的成功。

标签: djangodjango-forms

解决方案


可能是您的成功变量未将其值设置为“True”。在您的第二种方法中,尝试success=True在行前放置update_session_auth_hash(request, password_form.user)


推荐阅读