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