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

5 投票
1 回答
2679 浏览
提问于 2025-04-16 09:30

最近我在玩Pyramid这个框架,因为之前用的是Pylons,所以我现在主要关注的是URL的路由,而不是遍历。

我还在考虑使用处理器(handlers)来把特定于“控制器”的功能放到一个类里,这样就不会让view.py里充满各种函数了。

配置:

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

处理器:

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()调用中隐式声明动作的部分,可能我理解错了……不过,我现在主要的问题是如何在view_callable中访问到id

我该怎么获取'id'呢?

1 个回答

10

你可以通过请求的 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}

更多信息:

撰写回答