2009-06-02 17 views
1

すべてのURLマッピングジョブを実行するためにルートを使用しています。ここに私のアプリケーションでは、一般的なルートだ:Pythonルートの前処理ルートパラメータ

map.routes('route', '/show/{title:[^/]+}', controller='generator', filter_=postprocess_title) 

かなり頻繁に私は{タイトル}パラメータから(空白とアンダースコアなどの)いくつかの文字を削除する必要があります。現在、この変換を行う関数に対して、コントローラ内のメソッドごとに1つの呼び出しがあります。それは非常に便利ではないと私はルートがこの仕事をしたいと思います。出来ますか?

答えて

0

私はRoutesに精通していません。したがって、Routesであなたが後にしていることが可能かどうかわかりません。

しかし、コントローラのメソッドを、必要に応じてパラメータから文字を取り除くデコレータで飾ることはできますか?

これがより便利かどうかはわかりません。しかし、私にとって、デコレータを使うことは、コントローラーメソッドの中で同じことをインラインで行うこととは違う「感じ」を持っています。例えば


@remove_spaces_from('title') 
def my_controller(...): 
    ... 

あなたはデコレータに精通していない場合は、「Pythonのデコレータ」のためのGoogle検索は、あなたが開始されます。覚えておくべき重要なポイント:デコレータに引数が必要な場合、デコレータには2つのレベルのラッピングが必要です。

+0

ありがとうございますが、可能な限りコードの重複を避けたいと思います。 –