比Web.py更高效的网络框架?请务必极其Pythonic!
我很喜欢webpy,它真的很符合Python的风格,但我不喜欢每次都要添加网址映射和创建一个类,通常这个类里面就只有一个函数。我希望能减少代码输入,快速进行原型开发。
有没有人推荐一些新兴的框架,比如Bobo、Nagare、Bottle、Flask、Denied、cherrypy,适合像我这样喜欢webpy优点的人呢?
这些框架有什么好的理由值得推荐呢?
另外,我不太在意那些以文本为基础的模板系统,我使用的是面向对象的HTML生成。代码应该看起来像这样:
def addTask(task):
db.tasks.append({'task':task,'done':False})
return 'Task Added'
def listTasks():
d = doc()
d.body.Add(Ol(id='tasks'))
for task in db.tasks:
taskStatus = 'notDoneTask'
if task.done: taskStatus = 'doneTask'
d.body.tasks.Add(Li(task.task,Class=taskStatus))
return d
目前看起来,简约的CherryPy是一个很有竞争力的选择。会不会有其他框架在最后时刻逆袭呢?
3 个回答
1
我之前用过webpy。最近我发现了django,觉得它真不错。你只需要专注于自己的业务逻辑,框架会帮你处理大部分事情。
8
CherryPy 让你可以用树形结构来连接处理器,而不是使用正则表达式。比如,web.py 可能会写成:
urls = (
'/', 'Index',
'/del/(\d+)', 'Delete'
)
class Index:
def GET(self): ...
class Delete:
def POST(self, id): ...
而在 CherryPy 中,相应的写法是:
class Delete:
def POST(self, id): ....
class Index:
del = Delete()
def GET(self): ...
在 CherryPy 中,你甚至可以完全不使用类:
def delete(id): ...
def index(): ...
index.del = delete
9
Flask 是一个由 Armin Ronacher 创建的轻量级框架,它建立在 Werkzeug、Jinja2 和良好的设计理念之上(不过你也可以使用其他模板引擎,或者根本不使用模板引擎)。Flask 在处理网址映射方面非常简洁明了。
@app.route("/")
def index():
return """Hello, world. <a href="/thing/spam_eggs">Here's a thing.</a>"""
@app.route("/thing/<id>")
def show_thing(id):
return "Now showing you thing %s."%id
# (or:) return render_template('thing.html', id = id)
也许这正是你想要的?