将多值作为参数传递到金字塔URL分派中(添加路由)

2024-09-28 17:16:46 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在金字塔中配置和使用multidict。在

config.add_route('show_choosed_categories', '/categories/[list]')

并生成如下URL

^{pr2}$

我想我会用

request.GET.getall('categories')

金字塔似乎通过webob.multidict–多值字典对象https://docs.pylonsproject.org/projects/webob/en/stable/api/multidict.html

但是如何在URL分派中使用它。在


Tags: addconfigurlgetrequestshowroutelist
2条回答

您可能正在寻找config.add_route('foo', '/categories/*subpath')和{}。对它的支持是有限的,但如果它适合您的用例,它确实有效。请注意,这里的空列表是有效的,因此您需要处理它。在

您配置的路由只能在字符串文本[list]上匹配。路由不能在Python对象上匹配,只能匹配字符串和替换标记。来自Route Pattern Syntax under URL Dispatch

A pattern segment (an individual item between / characters in the pattern) may either be a literal string (e.g., foo) or it may be a replacement marker (e.g., {foo}), or a certain combination of both.

不过,您可以从request对象中提取multidict。在

# Conjugation of English verbs is horrible
config.add_route('show_chosen_categories', '/categories/')

假设您有一个名为相同的复选框列表,或者表单中有一个select multiple input,其中一个输入名为category,那么将生成如下所示的请求参数:

^{pr2}$

然后,任何以categories开头的URL都将匹配,并且请求参数将在视图中可用,具体取决于表单操作:

# form action="POST"
request.POST.getall('category')
# form action="GET"
request.GET.getall('category')
>>> [1, 2]

有关详细信息,请参见Multidict under Request and Response Objects。在

相关问题 更多 >