在db模型中获取请求对象?

时间:2009-12-23 13:06:18

标签: python google-app-engine

是否有办法让我可以访问请求对象,同时保存数据库对象,而不显式传递它,例如。

class RequestData(db.Model):
    ...
    def put(self):
        # autopopulate fields from current request

我只想快速访问请求,而不是通过这么多层的视图/表单/等传递它

3 个答案:

答案 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实例