在Django项目中能否用document.cookie编辑request.set_cookie创建的Cookie?
- 完全可以直接在JS里读写Cookie,不用绕views.py传JSON,这个方案完全行得通。
- 具体操作方式:
- 写Cookie:直接用
document.cookie设置,比如保存玩家坐标:document.cookie = "player_pos_x=10; player_pos_y=20; path=/; max-age=2592000",path=/确保全站都能访问这个Cookie,max-age设为2592000就是30天有效期,足够维持进度。 - 读Cookie:写个简单解析函数就行,比如:
调用function getCookie(name) { let value = "; " + document.cookie; let parts = value.split("; " + name + "="); if (parts.length === 2) return parts.pop().split(";").shift(); }getCookie('player_pos_x')就能拿到坐标,判断返回值是否为空,就能决定是加载存档还是开新游戏。
- 写Cookie:直接用
- 关于Django会话引擎的配合:
- Django默认的session是靠Cookie维持的,但你自定义的游戏进度Cookie和Django的session Cookie是分开的。如果想让进度Cookie不过期,直接给它设个足够长的
max-age就行,不用依赖Django会话引擎。要是你后续需要把进度同步到后端数据库,那再用AJAX把JS里的Cookie数据传到views.py处理就行。 - 另外,要是以后需要从views.py给JS传数据,其实可以在Django模板里直接渲染全局JS变量,比如在模板的
<script>里写const gameInitData = {{ init_data|safe }};,这样JS就能直接拿到后端数据,不用复杂的交互。
- Django默认的session是靠Cookie维持的,但你自定义的游戏进度Cookie和Django的session Cookie是分开的。如果想让进度Cookie不过期,直接给它设个足够长的
内容的提问来源于stack exchange,提问作者Mickxz
相关产品推荐
相关产品推荐

