使用更新的请求参数重定向

Redirecting with updated requests parameters

我编写了网格过滤器,但一些功能尚未实现,因此当人们尝试使用未实现的功能时,我想将他们重定向到默认网格。在我的控制器中,我可以访问请求对象。我可以更新它的参数并使用我的请求对象来重定向用户吗?

我试图直接更新 request.params 但它是一个只读对象。尝试使用 httpfound 但它不接受参数。

try:
    self._parse_filters(filters)
except NotImplementedError:
    url = self.request.route_
    self.reset_filters = True
    self.error = 'Not Implemented Functionality. Default filters loaded'
    self._parse_filters(self.default_filters)

您需要构建一个新的 URL(可能基于您当前请求中的参数)并使用 HTTPFound 生成重定向。要生成新 url 的查询部分,您可以使用 request.route_url 方法的 _query 参数或简单地使用 urllib.urlencode.

new_url = request.route_url(
    'not_implemented_view', 
    blah='boo',
    _query={'sort':'asc'}  # you can give it request.GET if you want all the same url parameters
) 
return HttpFound(new_url)