是否有办法让我可以访问请求对象,同时保存数据库对象,而不显式传递它,例如。
class RequestData(db.Model):
...
def put(self):
# autopopulate fields from current request
我只想快速访问请求,而不是通过这么多层的视图/表单/等传递它
答案 0 :(得分:2)
由于Google AppEngine使用CGI协议,因此请求信息都在环境变量中(参见CGI Environment Variables)。
您可以像这样重新生成请求对象:
req = google.appengine.ext.webapp.Request(dict(os.environ))
答案 1 :(得分:0)
据我所知,没有任何预先构建的方法可以实现这一点,但是编写这样的代码应该不会很难。
如果是GAE,self.request.arguments() method可用于读取请求对象的属性,因此应该能够迭代访问所有请求属性的值。
答案 2 :(得分:0)
views.py:
import threading
request_storage = threading.local()
def myview(request):
request_storage.data = request
models.py:
class MyClass():
def save():
from views import request_storage
request_storage.data.GET['myarg']
这将使用当前线程中的request_storage实例