Получить объект запроса в модели БД? - PullRequest
2 голосов
/ 23 декабря 2009

Есть ли способ, чтобы я мог получить доступ к объекту запроса, сохраняя объект БД, не передавая его явно, например,

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

Мне просто нужен быстрый способ доступа к запросу, вместо того, чтобы передавать его через множество слоев представления / форм / и т. Д.

Ответы [ 3 ]

2 голосов
/ 31 декабря 2009

Поскольку Google AppEngine использует протокол CGI, информация о запросах содержится в переменных среды (см. Переменные среды CGI ).

Вы можете восстановить объект запроса так:

req = google.appengine.ext.webapp.Request(dict(os.environ))
0 голосов
/ 31 декабря 2009

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 из текущего потока

0 голосов
/ 31 декабря 2009

Насколько мне известно, не существует заранее подготовленного способа добиться этого, однако написание такого фрагмента кода не должно быть очень сложным.

Если это GAE, метод self.request.arguments () может использоваться для чтения свойств объекта запроса и, следовательно, должен позволять итеративный доступ к значениям всех свойств запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...