在Django中保存动态页面
我在我的Django应用中有一个页面,用户可以对一张图片进行缩放和拖动。我想保存缩放级别和图片的位置,这样下次我打开这个页面时,图片就能恢复到我上次访问时的状态。
Django的文档里有关于如何设置会话信息的说明,但那是在Python代码中进行的。我不太明白的是,如何在我离开这个页面时执行“更新会话”的代码。
有没有办法让我的保存的会话和Django模板中的JavaScript变量保持同步呢?
1 个回答
2
你需要让你的网页把一些信息发送到服务器,这样服务器才能在会话中更新这些信息。在Django中,会话的工作方式是,它只会把一个会话ID发送到你的网页(通常是通过cookie),然后这个cookie会在你网页的每次请求中被发送回去(cookie是HTTP协议的一部分,由网页浏览器管理)。
模板代码是在服务器上运行的,用来输出HTML和JavaScript,但这些代码实际上并不是在服务器上运行的,模板也不是和服务器实时连接的。仅仅在JavaScript中设置变量是无法把它们发送回服务器的。
不过,你可以通过发送一个请求,比如使用ajax请求,把保存的变量发送到服务器,这样服务器就可以把它们放入会话中,以便后续使用。
jQuery提供了一个卸载事件,可以在用户离开时通知你。你可以绑定这个事件来进行更新。