Pyramid 路由上的可选 URL 参数

ffu*_*tes 1 python url-routing pyramid

例如,我想使用相同的路径提交表单并根据表单的 ID 号显示表单的内容。

我想到了一个重新匹配的参数:

config.add_route('poll', '/poll/{id}*')
Run Code Online (Sandbox Code Playgroud)

已经足够了,但是不起作用。当 POST 方法完成时,我希望它加载显示结果的页面,但它会抛出 404 错误。

Mic*_*kel 6

来自http://docs.pylonsproject.org/projects/pyramid/en/latest/narr/urldispatch.html#route-pattern-syntax

config.add_route('poll', '/poll/{id:.*}')
Run Code Online (Sandbox Code Playgroud)

request.route_url('poll', id='5')请注意,当需要通过参数生成 url 时id,不能省略它。您可以使用预生成器解决此问题:

def pregen(request, elements, kw):
    kw.setdefault('id', '')
    return elements, kw
config.add_route('poll', '/poll/{id:.*}', pregenerator=pregen)
Run Code Online (Sandbox Code Playgroud)

这将允许您使用request.route_url('poll')以及request.route_url('poll', id='5')