代码之家  ›  专栏  ›  技术社区  ›  Anurag Uniyal

在数据库模型中获取请求对象?

  •  2
  • Anurag Uniyal  · 技术社区  · 16 年前

    有没有一种方法可以让我在保存数据库对象的同时访问请求对象,而不显式地传递它,例如。

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

    我只是想要一个快速的访问请求的方法,而不是通过这么多的视图/窗体等层传递请求。

    3 回复  |  直到 16 年前
        1
  •  2
  •   iamamac    16 年前

    由于google appengine使用cgi协议,因此请求信息都存在于环境变量中(请参见 CGI Environment Variables )。

    您可以像这样重新生成请求对象:

    req = google.appengine.ext.webapp.Request(dict(os.environ))
    
        2
  •  0
  •   Sri    16 年前

    据我所知,没有任何预先构建的方法可以实现这一点,但是编写这样一段代码并不难。

    如果它的GAE, self.request.arguments() method 可用于读取请求对象的属性,因此应允许迭代访问所有请求属性的值。

        3
  •  0
  •   Antony Hatchkins Alexander Hamilton    16 年前

    查看:

    import threading
    request_storage = threading.local()
    def myview(request):
        request_storage.data = request
    

    模型:

    class MyClass():
        def save():
            from views import request_storage
            request_storage.data.GET['myarg']
    

    这将使用当前线程的请求存储实例