Конфигурация вида предназначена для декларативного представления.Это означает, что представление не знает, как оно отображается, вы просто возвращаете один и тот же формат словаря каждый раз, и выбранный модуль визуализации будет обрабатывать его на основе предикатов.При этом вы можете нарушить этот шаблон, если хотите, потому что вы можете делать все, что захотите, в 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
и сравнить его с каждым из названий маршрута('circle_route'
или 'triangle_route'
) в сценарии отправки URL.