2009-12-23 2 views
2

Есть ли способ, чтобы я мог получить доступ к объекту запроса, сохраняя при этом объект db, не передавая явно его, например.Получить объект запроса в модели db?

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

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

+0

является это Джанго? – Kugel

+0

@ Kugel, нет, это GAE, мы можем запустить django там, хотя –

ответ

2

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

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

req = google.appengine.ext.webapp.Request(dict(os.environ)) 
+0

Это, кажется, отвечает на вопрос, что дает? – bentford

+0

да, я могу получить все куки, которые я хотел, спасибо :) –

+0

Спасибо! Это тоже помогло мне –

0

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

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

+0

Вы также хотели бы построить автоматическую проверку в этом интерфейсе «запрос к модели». – Sri

+0

Я не понимаю, что вы имеете в виду, можете ли вы привести пример того, как я могу получить объект запроса в модели db? –

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 экземпляр из текущего потока

+0

- это поточный модуль, доступный в GAE? –

+0

hmm. Я не заметил тега. Это было? Нет, он там недоступен. В GAE я придерживаюсь версии Ямамака. –

Смежные вопросы