低门槛的Python Web框架

4 投票
7 回答
1405 浏览
提问于 2025-04-15 12:02

我想要一种类似LAMP或WAMP的体验。

希望这个过程非常简单明了。写好脚本后,按F5就能看到结果。尽量少用复杂的东西。

我会用到SQLAlchemy和(可能)一些简单的模板引擎。

我需要简单的环境访问,像PHP那样。比如COOKIE、SESSION、POST和GET这些对象。

我不想为了让网站运行而写一个中间层,也不想处理CGI的具体细节。

这个项目不需要太复杂,主要是给初学者或者刚开始学Python的程序员用。

使用MVC框架也可以考虑。我觉得ASP.NET MVC做得很好。我喜欢的一点是,POST过来的数据可以自动转换成数据模型对象,如果需要的话。

你能帮我吗?

谢谢!

PS:我在以前的帖子中没有找到符合这些要求的内容。

7 个回答

5

你所描述的内容最像的是Pylons。不过,Python的网络框架数量非常庞大——你可以查看这个页面,里面尝试列出了所有的框架,并且非常简要地介绍了每一个!-)

7

CherryPy 可能正是你需要的东西。它可以把网址直接映射到Python的函数上,并且处理所有的cookie和会话问题(当然还有POST和GET参数)。

它不是像Django或Rails那样的全功能解决方案。另一方面,这也意味着你不会被迫使用你不喜欢的模板引擎或ORM;你可以自由选择自己喜欢的工具。

它还包含一个符合WSGI标准的网络服务器,所以你甚至不需要Apache。

5

为了让入门更简单,web.py 非常轻量和简单。

它的特点:

  • 部署很简单……只需把 web.py 文件夹复制到你的应用目录,然后启动服务器。
  • 使用正则表达式来处理网址。
  • 类的映射非常简单。
  • 自带服务器(大多数框架都有这个功能)。
  • 非常轻薄(至少从代码行数来看)的一层代码,覆盖在 Python 应用代码之上。

下面是它的 hello world 示例:

import web

urls = (
    '/(.*)', 'hello'
)
app = web.application(urls, globals())

class hello:        
    def GET(self, name):
        if not name: 
            name = 'world'
        return 'Hello, ' + name + '!'

if __name__ == "__main__":
    app.run()

虽然我从概念上很喜欢 Werkzeug,但在“你好,世界!”中写 wsgi 相关的代码真的很麻烦,这完全妨碍了展示一个应用。

不过,web.py 也不是完美的,对于大型项目来说,它可能不是合适的工具,因为:

  • 路由风格的系统(我个人认为)比纯正则表达式的系统要好。
  • 把 web.py 和其他中间件结合起来可能会有点冒险。

撰写回答