CherryPy

d:id:tenkomaさんのところの記事を読んで色々思ったので書いてみる。

TurboGearsの基本はPythonとはまったく関係ない。

ここ重要。


つまるところMVCフレームワークをがっつりやらないと
どこから手を付けていいのかわからないのがMVCフレームワークの駄目なところ。

なので個人的にはTurboGearsをやり始めるかたは是非CherryPyをやって欲しいです。

CherryPyに魅力を感じればおぉなるほどとなると思います。

今後はTurboGearsというよりはCherryPyに焦点を絞って
少しずつ説明できたらなぁと思います。

CherryPyって何?ってことですが
動的コンテンツがサクサク作れてしまう
ナイスなウェブフレームワークです。

まずはHello, worldを実感してみてください。

from autoimp import *

import cherrypy
from cherrypy import expose

class Root(object):
    
    @expose
    def index(self):
        return "Hello, world!"
    
    @expose
    def foo(self):
        return "foo"

cherrypy.root = Root()

if __name__ == '__main__':
    cherrypy.server.start()

これが基本です。

http://localhost:8080/

にアクセスすれば結果が見られると思います。

では説明を。

まずRootクラスですが、これは所詮名前空間。とでも思っておいてください。
とくに名前重要ではないですが、慣例でRootと書くことになっています。

indexメソッドですがこれはindex.htmlの代わりをするものです。

これだけだと実感がわかないと思うので

http://localhost:8080/foo

にアクセスしてみてください。

ここが驚くところです、むしろ驚いてください。

つまりメソッド=URLなのです。
個人的にこれがかなり気に入ってます。

そして引数を撮るともっと面白いです。

@expose
def entry(self, year, month, day, title):
    return "%s %s %s %s" % (year, month, day, title)

を追加してみましょう。

追加後

from autoimp import *

import cherrypy
from cherrypy import expose

class Root(object):
    
    @expose
    def index(self):
        return "Hello, world!"

    @expose
    def foo(self):
        return "foo"
    
    @expose
    def entry(self, year, month, day, title):
        return "%s %s %s %s" % (year, month, day, title)

cherrypy.root = Root()

if __name__ == '__main__':
    cherrypy.server.start()

そして

http://localhost:8080/entry/1999/12/24/foo
http://localhost:8080/entry/2005/01/21/bar
http://localhost:8080/entry/1999/07/31/hoge

どうでしょうか、感動しませんか?:-p

可能性が色々と広がりませんか?
DBと連携したいと思いませんか?

それがORMだったりすると素敵になりませんか?(意味不明

とりあえずはこんな感じで。