Flask框架下点击首页链接时如何在jinja2模板中清除session
错误原因
你的写法从逻辑和语法上都有问题:
- Jinja 模板里
{{ }}包裹的代码是服务端渲染页面的时候就会执行的,你把session.clear()放在这里,页面一加载完session就已经被清了,根本等不到用户点击链接 - Jinja 表达式不支持直接用分号分隔多段逻辑输出到HTML属性里,语法不符合规范肯定会报错
解决方法
最简单稳妥的方式是加个专门的后端路由处理清session+跳转的逻辑:
- 先在Flask后端新增路由:
from flask import session, redirect, url_for @app.route('/clear-session-go-home') def clear_session_go_home(): session.clear() return redirect(url_for('index'))
- 把模板里的首页链接改成指向这个路由就行:
<a href="{{ url_for('clear_session_go_home') }}" ><h1>Home</h1></a>
补充说明
Session是服务端存储的状态,本身就需要走服务端逻辑操作才安全,这是符合规范的标准实现,不要尝试在前端直接操作服务端Session。
内容的提问来源于stack exchange,提问作者RatDon
相关产品推荐
相关产品推荐

