python
  • pyramid
  • 2012-01-03 78 views 0 likes 
    0

    有沒有辦法在@view_config level的級別傳遞額外的參數?在@view_config decorator中傳遞額外的參數

    我想用多@view_config裝飾的方法,而是傳遞一個參數來表示,其中一個已被使用:

    @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

    視圖配置旨在聲明。這意味着視圖不知道它是如何呈現的,每次只返回相同的字典格式,而選擇的渲染器將根據謂詞處理它。話雖如此,如果你願意,你可以打破這種模式,因爲你可以在custom_predicate中做任何你想做的事情。

    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')的。

    相關問題