2010-11-04 2 views
0

это мой код:где моя ошибка код с помощью UrlFetch на Google App Engine

class save(BaseRequestHandler): 
    def get(self): 
     counter = Counter.get_by_key_name('aa-s') 
     counter.count += 1 
     url = "http://www.google.com" 
     result = urlfetch.fetch(url) 

     if result.status_code == 200: 
      counter.ajax = result.content 
      counter.put() 

     self.redirect('/') 

и ошибка:

Traceback (most recent call last): 
    File "D:\Program Files\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 511, in __call__ 
    handler.get(*groups) 
    File "F:\ss\Task Queue\main.py", line 48, in get 
    counter.ajax = result.content 
    File "D:\Program Files\Google\google_appengine\google\appengine\ext\db\__init__.py", line 542, in __set__ 
    value = self.validate(value) 
    File "D:\Program Files\Google\google_appengine\google\appengine\ext\db\__init__.py", line 2453, in validate 
    raise BadValueError('Property %s is not multi-line' % self.name) 
BadValueError: Property ajax is not multi-line 
INFO  2010-11-04 08:24:29,905 dev_appserver.py:3283] "GET /save HTTP/1.1" 500 - 

так что я не могу найти ошибку,

сделал вы .

спасибо

ответ

5

Вы пытаетесь сохранить результат в counter.ajax, который является StringProperty, который не имеет multiline = True. Либо установите multiline = True в определении «ajax», либо замените его на TextProperty(). Последнее почти наверняка является правильным ответом - TextProperties может быть длиннее и не индексироваться.

3

Ошибка возникает в вашей модели Counter.

"ajax" должно быть многострочным строковым свойством. См. Types and Property Classes documentation.

Вы хотите сделать:

ajax = db.StringProperty(multiline=True) 

отметить также, что db.StringProperty может быть использован только для строк 500 символов или менее.