bottle httprequest 对象手动更新
bottle httprequest object manual update
就在昨天,我无法使用一个函数,该函数 return 一个模板取决于 cookie,并且会被不同路由的不同方法调用。原因是所有 response.set_cookie()
在方法完成服务当前路由之前都没有应用于主 Bottle 对象 HTTPResponse。所以问题是有一种方法可以显式地将所有更改应用到 HTTPResponse 对象,这样我就可以避免将复杂的结构传递给子例程等。
谢谢你的帮助!
UPD:例如有一条 response.set_cookie('temp', 'sampletext')
行。然后我调用子程序,它调用另一个子程序,依此类推。所以在他们每个人中我都不会 request.get_cookie('temp')
returning 'sampletext'
。因为尚未应用对 cookie 的更改。在 Bottle.py 代码中,您可以找到以下代码:
class HTTPResponse(Response, BottleException):
def __init__(self, body='', status=None, headers=None, **more_headers):
super(HTTPResponse, self).__init__(body, status, headers, **more_headers)
def apply(self, response):
response._status_code = self._status_code
response._status_line = self._status_line
response._headers = self._headers
response._cookies = self._cookies
response.body = self.body
似乎每个请求都执行一次,并且来自 httpresponse 对象的更改仅在路由的服务方法终止时才应用于响应对象。
我问是否有一种方法可以在路由的服务方法评估期间手动将更改应用于响应对象。
I am asking if there is a way to apply changes to response object manually, during the route's serving method evaluation.
没有
我不太确定,但听起来您只是想在请求期间存储一些状态。
此机制是简单地在请求对象上设置属性。例如
@route(...)
def index_page():
...
request.mydata = 'hello'
...
这完全独立于 cookie。如果两者都需要,则两者都设置即可;一个在请求对象上,另一个在响应上。
就在昨天,我无法使用一个函数,该函数 return 一个模板取决于 cookie,并且会被不同路由的不同方法调用。原因是所有 response.set_cookie()
在方法完成服务当前路由之前都没有应用于主 Bottle 对象 HTTPResponse。所以问题是有一种方法可以显式地将所有更改应用到 HTTPResponse 对象,这样我就可以避免将复杂的结构传递给子例程等。
谢谢你的帮助!
UPD:例如有一条 response.set_cookie('temp', 'sampletext')
行。然后我调用子程序,它调用另一个子程序,依此类推。所以在他们每个人中我都不会 request.get_cookie('temp')
returning 'sampletext'
。因为尚未应用对 cookie 的更改。在 Bottle.py 代码中,您可以找到以下代码:
class HTTPResponse(Response, BottleException):
def __init__(self, body='', status=None, headers=None, **more_headers):
super(HTTPResponse, self).__init__(body, status, headers, **more_headers)
def apply(self, response):
response._status_code = self._status_code
response._status_line = self._status_line
response._headers = self._headers
response._cookies = self._cookies
response.body = self.body
似乎每个请求都执行一次,并且来自 httpresponse 对象的更改仅在路由的服务方法终止时才应用于响应对象。 我问是否有一种方法可以在路由的服务方法评估期间手动将更改应用于响应对象。
I am asking if there is a way to apply changes to response object manually, during the route's serving method evaluation.
没有
我不太确定,但听起来您只是想在请求期间存储一些状态。
此机制是简单地在请求对象上设置属性。例如
@route(...)
def index_page():
...
request.mydata = 'hello'
...
这完全独立于 cookie。如果两者都需要,则两者都设置即可;一个在请求对象上,另一个在响应上。