2009-06-04 57 views
4

我正在寻找一种LAMPish/WAMPish体验。Python web框架的入门门槛低

东西很透明。编写脚本,按F5并查看结果。很少,如果有抽象的话。 SQLAlchemy和(也许)一些简单的模板引擎将被使用。

我需要简单的访问环境 - 类似于PHP的方式。像COOKIE,SESSION,POST,GET对象。

我不想写一个中间件层来让一些web服务正常运行。我不想处理CGI的细节。

这并不意味着一个非常复杂的项目,它适用于开始程序员和/或开始Python程序员。

一个MVC框架不是不可能的。 ASP.NET MVC很好地完成了IMO。我喜欢的一件事是,如果需要,POST数据会自动转换为数据模型对象。

你能帮我一下吗?

谢谢! PS:我在旧帖子中没有找到符合这些标准的任何内容。

+0

“我不想只写一个中间件层让一些网络服务正常运行,而我不想处理CGI的细节问题。“我不确定如何解释:使用中间件(即Web框架)来避免CGI的细节。 “中间件”是什么意思?你能给个例子吗? – 2009-06-04 09:56:27

+1

我不想处理我的应用程序和Web服务器之间的接口。它应该只是工作。在看过“werkzeug”的情况下,我想我会提到它。也许我对“中间件”这个词的选择是错误的。 – user51710 2009-06-04 11:28:33

+0

“它应该只是工作”并不意味着太多。有一个界面。有人必须编写通过该接口交换数据的代码。我没有真正明白这个问题 - 仍然 - 你能提供一些符合你的“正常工作”标准的细节或示例代码吗? – 2009-06-04 17:16:08

回答

5

对于进入门槛低,web.py是非常非常轻和简单。

特点:

  • 容易(开发)部署... web.py文件夹复制到您的应用程序目录,然后启动服务器
  • 正则表达式为基础的URL映射
  • 非常简单的类映射
  • 内置服务器(大多数框架当然有这个)
  • 非常薄(至少通过代码行测量)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与其他中间件集成可能是冒险的
1

看:

  • WSGI,HTTP服务器的标准Python API调用Python代码。
  • Django,流行的,功能丰富的,有据可查的Python的Web框架
  • web.py,最小的Python Web框架
+3

我会投票了网络。如果它是在一个单独的评论。我不想对Django投票,Django根本不容易部署,或者进入门槛低。 – 2009-08-12 16:42:06

1

你调查过Django Web框架?它是一个用python编写的MVC框架,并且设置和入门相对简单。你可以用python运行它,因为它可以使用SQLite和它自己的开发服务器,或者你可以设置它来使用MySQL和Apache,如果你愿意的话。

Pylons是另一个支持模型SQLAlchemy的框架。我从来没有用过它,但看起来很有希望。

6

CherryPy可能是你需要的。它透明地将URL映射到Python函数,并处理所有的cookie和会话内容(当然还有你的POST/GET参数)。

这不是像Django或Rails这样的全栈解决方案。另一方面,这意味着它不会让你使用模板引擎或者你不喜欢的ORM;你可以随意使用你喜欢的任何东西。

它包含一个WSGI兼容的Web服务器,所以你甚至不需要Apache。

5

你所描述的最类似Pylons,在我看来。但是,/为Python Web框架的数量是巨大的 - 看到this page的企图,并列出非常简要地描述他们的每一个 - !)

0

退房web2py。它没有配置即可使用,甚至可以使用USB存储棒。模板语言是纯Python,您可以通过浏览器编辑器开发您的整个应用程序(尽管我发现vim速度更快;)

1

别忘了Bottle。这是一个单一文件的微型网页框架,没有依赖性,使用起来非常简单。下面是一个“Hello World”的例子:

from bottle import route, run 
@route('/') 
def index(): 
    return 'Hello World!' 
run(host='localhost', port=8080) 

这里访问POST变量的例子(cookie和GET瓦尔相似)

from bottle import route, request 
@route('/submit', method='POST') 
def submit(): 
    name = request.POST.get('name', 'World') 
    return 'Hello %s!' % name