2

CherryPy ドキュメントの「Dispatching / Other Dispatchers」セクションには、Django スタイルの正規表現からビュー関数へのマッピング定義の例がありますが、これを にアタッチする方法については示されていませんcherrypy.tree

このマッピングをどのように登録しますか?

編集: Google グループの「正規表現 URL マッピング」スレッドに基づいて、正規表現を使用してビューをアタッチするには、次のようなクラスを使用してスタイル マッピングをcherrypy-users使用する必要があることがわかりました。routescherrypy.dispatch.RoutesDispatcher

def hello(name='stranger'):
    """Sample view."""
    return 'Hello, %s!'%name

dispatch = cherrypy.dispatch.RoutesDispatcher()
dispatch.connect('hello-1', '/hello', hello)
dispatch.connect('hello-2', '/hello/{name:([^/]+)}', hello)
cherrypy.tree.mount(None, config={
        '/': {
             'request.dispatch': dispatch,
            }
        })

{argument-name:regular-expression}URL パターンの構文に注意してください。

CherryPy のドキュメントに示されているように、ペアのリスト構文を使用してルート パターンを指定する方法はありますか?

4

1 に答える 1

0

追加の手順は必要ありません。リクエスト中にcherrypy.tree、最初のルーティング ステージを実行します。このステージでは、パスからアプリへのマッピングを使用して、着信リクエストがアプリケーションにマップされます。起動時に呼び出すとtree.mount(root=None, script_name='/', config=conf)、ツリーは裏でcherrypy.Applicationを作成し、「/」にマウントします。

アプリケーションが見つかると、その構成が引き継ぎ、ドキュメント内のサンプル アプリの "request.dispatch" 構成には、"このアプリのすべての URI に RoutesDispatcher を使用する" と記載されています。その RoutesDispatcher インスタンスは、リクエストの制御を適切な Controller に渡します。

ドキュメントの正規表現の例は、十分に開発されていません。それを使用する Dispatcher を作成する必要があります。そのプロセスは「のみ」、ハンドラーを見つけて request.config を収集する必要がありますが、選択したディスパッチ スタイルによっては、これら 2 つのアクティビティが非常に複雑になる可能性があります。インスピレーションについては、既存のディスパッチャを参照してください。

于 2012-06-22T02:16:16.217 に答える