如何将URL的"id"部分传递给view_callable?

dav*_*ave 4 python pylons pyramid

我最近一直在玩金字塔,而且从Pylons背景来看,我一直专注于URL路由而不是遍历.

我一直在寻找使用处理程序将"控制器"特定功能组合到一个类中.而不是让view.py被一堆函数污染.

配置:

config.add_handler('view_page', '/page/view/{id}', handler=Page, action=view_page)
Run Code Online (Sandbox Code Playgroud)

处理器:

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}
Run Code Online (Sandbox Code Playgroud)

我今天早些时候正在阅读有关在add_handler()调用中隐式声明操作的文档,这可能是错误的......但是,我的主要问题是访问idview_callable中的内容

我怎么得'id'?

小智 9

您可以通过request.matchdict访问«id»:

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}
Run Code Online (Sandbox Code Playgroud)

更多信息: