5

我喜欢 webpy,它真的很 Pythonic,但我不喜欢添加 url 映射并创建一个类,通常里面只有 1 个函数。我对快速减少代码输入和原型制作很感兴趣。

对于 webpy 的好东西的爱好者,有没有人有任何新的建议,例如 Bobo、Nagare、Bottle、Flask、Denied、cherrypy?

是什么让它成为一个很好的理由?

此外,我不介意错过(强烈)基于文本的模板系统,我使用面向对象的 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 看起来像是一个强有力的竞争者。会有人在最后一刻拯救吗?

4

3 回答 3

9

Flask是 Armin Ronacher 的微框架,建立在 Werkzeug、Jinja2 和良好的意图之上(尽管您可以使用您喜欢的任何模板引擎,或者根本不使用),非常简洁地进行 URL 映射。

@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)

也许这就是你要找的?

于 2010-06-03T14:41:10.817 回答
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
于 2010-06-03T14:32:17.820 回答
1

我是 webpy 的用户。最近,我发现了 django,我认为它很棒。您可以只专注于您的业务逻辑,框架将为您完成大部分工作。

于 2010-06-03T14:35:41.750 回答