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

Django实现登出按钮弹出JS确认框,取消时不触发登出视图

解决Django登出弹窗确认后才执行登出的问题

问题核心是点击<a>标签时,浏览器会优先执行href的默认跳转逻辑,完全不受弹窗选择结果影响。要实现“取消则不触发登出”,必须先阻止默认跳转,仅在用户确认后再手动触发登出请求。

具体修改方案:

1. 调整HTML结构(base.html)

给<a>标签的onclick绑定带返回值的函数,用来控制是否允许默认跳转:

<li id="logout-tab"><a href="{% url 'logout' %}" onclick="return logout_popup()">Logout</a></li>

2. 修改JavaScript函数(script.js)

让函数根据弹窗结果返回布尔值,仅在用户确认时允许跳转:

function logout_popup() {
    if (confirm("确定要登出吗?")) {
        // 确认后允许执行默认跳转
        return true;
    } else {
        // 取消则阻止跳转
        return false;
    }
}

3. 视图代码保持不变(views.py)

def logout(request):
    if "user_info" in request.session:
        del request.session["user_info"]
    # 重定向到登录页
    return redirect("login")

修改完成后,点击登出按钮会先弹出确认框:点击“确定”才会跳转到logout视图执行登出,点击“取消”则不会触发任何跳转操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:15:38