如何在Python网页应用中启动会话?

7 投票
5 回答
31483 浏览
提问于 2025-04-15 13:10

这个问题是基于 这个回答

我在找一个和PHP的 session_start() 类似的函数,用在Python里。我想要一个像PHP中的 $_SESSION 这样的字典,这样在运行这个命令后就能使用它。

5 个回答

5

你可以考虑看看 Beaker 这个 Python 库,它不依赖于特定的网页框架,可以在 WSGI 兼容的环境中使用:

http://beaker.groovie.org/

Beaker 是一个用于缓存和会话管理的库,适合用在网页应用和独立的 Python 脚本或应用中。它提供了 WSGI 中间件,方便你在基于 WSGI 的网页应用中直接使用,同时也有缓存装饰器,能让你在任何 Python 应用中轻松使用。

8

作为一个从PHP转向Python的人,我可以告诉你,Django是开始学习Python网页开发的一个不错选择。特别是如果你之前使用过PHP的MVC框架,那你会觉得Django更容易上手。Django内置了会话管理的功能,相关的文档可以在这里找到:

http://docs.djangoproject.com/en/dev/topics/http/sessions/

出于好奇,我也查了一下用纯Python进行会话管理的资料,发现了这个:

http://code.activestate.com/recipes/325484/

根据评论来看,使用一些经过验证的框架来处理这个问题会更好。如果你对Django不感兴趣,也可以看看其他的一些框架

10

让我来谈谈一些可能和你问题相关的事情……这可能对你不太重要,但我觉得其他人可能会带着同样的问题来这里,能从我的(有限的)经验中受益……因为我曾经也有过这个问题。

作为一个从PHP转到Python的人(而且再也没有回头),我觉得了解会话是如何运作的很有用。除非你(a)想通过实践来更深入地理解会话管理,或者(b)需要现有框架没有的功能,否则自己实现一个会话框架可能不是个好主意。

维基百科总是一个好的起点。简单来说,会话数据会存储在服务器上的某个地方,并通过一个唯一的标识符(某种哈希值)进行索引。这个标识符会在客户端和服务器之间来回传递,通常是作为一个cookie或者URL的一部分(查询字符串)。为了安全起见,你会希望使用SSL连接,或者用其他数据(比如IP地址)来验证会话ID。默认情况下,PHP会把会话存储为文件,但在共享服务器上,这可能会带来安全风险,所以你可能想要覆盖会话引擎,把会话存储在数据库中。Python的网络框架也有类似的功能。

当我开始用Python进行网页编程时,我注意到两件事。首先,PHP把很多“魔法”封装在语言里,让初学者(像我在2003年时)很容易学习这门语言,但并没有教我很多关于它是如何工作的。因此,我发现自己需要研究很多关于网页应用的话题,特别是数据库连接池、URL映射、会话和线程。PHP(以及我了解的Django)会为你抽象掉这些。第二,PHP其实是个很糟糕的语言;)但它能完成工作!!

就我个人而言,我使用CherryPy进行网页开发。它有会话管理作为一个“工具”,你可以选择开启。

撰写回答