You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

表单成功重定向后,如何在HTML页面检测状态并显示提示?

解决方案

你可以通过两种可靠的方式实现需求,不推荐检测来源URL的方式(HTTP_REFERER易被浏览器禁用或篡改,稳定性差):

方法一:通过URL查询参数传递状态

修改密码修改视图的成功跳转URL,附加状态参数,在登录模板中直接读取该参数:

  1. 更新views.py中的ChangePasswordView:
class ChangePasswordView(PasswordChangeView):
    form_class = ChangePasswordForm
    
    def get_success_url(self):
        # 跳转登录页时附加密码修改成功的标识参数
        return f"{reverse_lazy('login')}?password_changed=1"
  1. 修改login.html模板:
{% if request.GET.password_changed %}
    <p style="color:green;">Password changed successfully! Please login.</p>
{% endif %}

方法二:使用Django消息框架(更优雅的方案)

利用Django内置的消息框架传递提示信息,避免状态暴露在URL中:

  1. 确保项目settings.py已启用消息中间件(默认配置通常已包含):
MIDDLEWARE = [
    # ... 其他中间件
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # ...
]
  1. 更新views.py中的ChangePasswordView,添加成功消息:
from django.contrib import messages

class ChangePasswordView(PasswordChangeView):
    form_class = ChangePasswordForm
    success_url = reverse_lazy("login")

    def form_valid(self, form):
        response = super().form_valid(form)
        # 添加密码修改成功的提示消息
        messages.success(self.request, "Password changed successfully! Please login.")
        return response
  1. 修改login.html模板渲染消息:
{% if messages %}
    {% for message in messages %}
        <p style="color:green;">{{ message }}</p>
    {% endfor %}
{% endif %}

内容的提问来源于stack exchange,提问作者Adryan Zeigler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:35:16