2012-01-03 12 views
0

@view_config levelのレベルで余分なパラメータを渡す方法はありますか?@view_configデコレータの余分なパラメータを渡す

私は方法のために、複数の@view_configデコレータを使用したいが、使用された1つを示すためにパラメータを渡します。

@view_config(renderer="shape.mak", route_name='circle_route') 
@view_config(renderer="shape.mak", route_name='triangle route') 
def new_model(self, fparams=None, ppath=None): 
    #here, I'd like to capture a variable that tells me whether the cirlce or triangle route was used to access this method 

私は私が私のルートを統合(例えば形状のルートを持っている)して追加することができます実現形状のタイプの追加パラメータですが、私はオプションを知りたいと思います。

答えて

1

ビュー構成は宣言的なものです。これは、ビューがどのようにレンダリングされているのかわからないことを意味し、毎回同じ辞書フォーマットを返し、選択したレンダラーが述語に基づいてそれを処理します。あなたが望むなら、あなたはあなたがしたいことを何でもできるので、あなたはこのパターンを破ることができると言われています。

def set_shape_predicate(shape): 
    def predicate(context, request): 
     request.shape = shape 
     return True 
    return predicate 

@view_config(renderer="shape.mak", route_name='circle_route', custom_predicates=[set_shape_predicate('circle')]) 
@view_config(renderer="shape.mak", route_name='triangle route', custom_predicates=[set_shape_predicate('triangle')]) 
def new_model(self): 
    # request.shape will be 'circle' or 'triangle' 

また、単にrequest.matched_route.nameをチェックして、URLディスパッチするシナリオでのルート名('circle_route'または'triangle_route')のそれぞれにそれを比較することができます。

関連する問題