2011-01-06 7 views
4

Я играл с Pyramid в последнее время и, исходя из фона Pylons, я фокусировался в маршрутизации URL, а не на обходе.Как передать часть идентификатора URL в view_callable?

Я также рассматривал использование обработчиков для группировки отдельных функций «контроллера» в один класс. Вместо того, чтобы иметь view.py, загрязненную кучей функций.

Config:

config.add_handler('view_page', '/page/view/{id}', handler=Page, action=view_page) 

Handler:

from pyramid.response import Response 
from pyramid.view import action 

class Page(object): 

    def __init__(self, request): 
     self.request = request 

    def view_page(self): 
     return {'id': id} 

Я читал документы ранее сегодня о неявной декларации действия в вызове add_handler(), так что может быть неправильно ... Тем не менее, моя главная проблема заключается в доступе к id в view_callable

Как мне получить идентификатор?

ответ

9

Вы можете получить доступ к «идентификатор» через request.matchdict:

from pyramid.response import Response 
from pyramid.view import action 

class Page(object): 

    def __init__(self, request): 
     self.request = request 

    def view_page(self): 
     matchdict = request.matchdict 
     id = matchdict.get('id', None) 
     return {'id': id} 

Подробнее:

+0

Я помню, как читал, что раньше, но она полностью поскользнулся мой разум ... Привет, помощник. – dave