1

Каков наилучший способ сохранить одну редактируемую строку в Python Google App Engine? Я попытался использовать NDB, используя один маршрут для создания, чтения и обновления строки. Но это, похоже, не работает:App Engine NDB Simple Create Update Update

class Storage(ndb.Model): 
    content = ndb.StringProperty() 

class CreateReadUpdate(webapp2.RequestHandler): 
    def get(self): 
     entity = ndb.Key(Storage, 'name').get() 
     self.response.out.write(entity.content) 
    def post(self): 
     content = json.loads(self.request.body).get('content') 
     entity = ndb.Key(Storage, 'name').get() 
     if not entity: 
      entity = Storage(content='') 
     entity.content = content 
     entity.put() 

Не знаете, как отлаживать в этой среде. Поэтому я должен спросить, что здесь не так? Я просто хочу простейший CRUD App Engine.

+1

Вы проверили Datastore Viewer, если у вас что-нибудь есть? – Lipis

ответ

3

Начать отладку с регистрацией на dev и на производстве.

Простой пример:

import logging 

... 

logging.info(entity.property) 

Ваша проблема заключается в том, что вы не предоставляют KEY_NAME/идентификатор для объекта вы сохраняете (если все остальное в порядке), таким образом, при попытке отобразить его вы не получите ничего ,

Изменение сохранения логики в этом:

def post(self): 
    content = json.loads(self.request.body).get('content') 
    entity = ndb.Key(Storage, 'name').get() 
    if not entity: 
     entity = Storage(id='name', content='') # see here 
    entity.content = content 
    entity.put() 

или в качестве альтернативы:

def post(self): 
    content = json.loads(self.request.body).get('content') 
    entity = Storage.get_or_insert('name') 
    entity.content = content 
    entity.put() 

Если вам нужен пример проверки «How to use GAE with AJAX» из предыдущего ответа и this является репо

+1

Для получения запроса - я считаю, что Storage.get_by_id («имя») будет правильным. Благодаря! – benshope

+0

@ benshope да. Хотя я предпочитаю использовать метод построения ключей, как вы использовали. Это более последовательно. –

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