Как сопоставить два вида с одним и тем же маршрутом в пирамиде?

У меня есть два представления: «список заказов» и «просмотр заказов». «orderlist» покажет пользователю все заказы, а «orderview» покажет подробную информацию об одном заказе. Теперь я хотел бы организовать URL следующим образом:

/order        map to orderlist and show all orders
/order/{id}   map to orderview and show detailed info of one order

Есть ли способ это реализовать? Спасибо.


person Lingfeng Xiong    schedule 13.09.2012    source источник
comment
Для справки: это 2 разных маршрута, которые просто имеют один и тот же корень. :-)   -  person Martijn Pieters    schedule 13.09.2012


Ответы (1)


Это просто базовая отправка URL.

config.add_route('all_orders', '/order')
config.add_route('order_detail', '/order/{id}')

@view_config(route_name='all_orders', renderer='all_orders.mako')
def all_orders_view(request):
    all_orders = {} # query the DB?
    return {'orders': all_orders}

@view_config(route_name='order_detail', renderer='order_detail.mako')
def order_detail_view(request):
    order_id = request.matchdict['id']
    order = None # query the db for order
    if order is None:
        raise HTTPNotFound
    return {'order': order}
person Michael Merickel    schedule 13.09.2012