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
相关产品推荐
相关产品推荐

