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

Werkzeug、Jinja2、および善意(ただし、好きなテンプレートエンジンを使用することも、まったく使用しないこともできます)の上に構築されたArmin RonacherのマイクロフレームワークであるFlaskは、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 に答える