django - 更改密码后显示确认消息
问题描述
用户成功更改密码后,我将用户保留在名为 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 %}
密码已更改,但我无法显示消息来庆祝这一美妙的成功。
解决方案
可能是您的成功变量未将其值设置为“True”。在您的第二种方法中,尝试success=True
在行前放置update_session_auth_hash(request, password_form.user)
推荐阅读
- c++ - 使用 {fmt} 引用字符串
- node.js - 请求 client.guilds 给出未定义
- c# - 1 控件,两个独立的绑定源
- fortran - 我在哪里(网站)可以找到“libcaf_mpi.a”?
- python - Flask 变量未显示在 HTML 页面上
- xml - 如何在 Lazarus/Free Pascal 的 DBGrid 中加载 XML/CSV/ODB 文件?
- javascript - 如何隐藏mongodb中除第一个之外的重复数据?
- php - Laravel Multi-Tenancy Passport API:未选择数据库
- docker - 从私有注册表中删除 docker 映像会导致 - 不支持该操作
- javascript - Socket.Io 事件多次命中