2010-11-04 7 views
0

voici mon code:où est mon erreur de code à l'aide urlfetch sur 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('/') 

et l'erreur est:

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 - 

donc je ne peux pas trouver l'erreur,

a fait toi .

merci

Répondre

5

Vous essayez de stocker le résultat dans counter.ajax, qui est un StringProperty qui n'a pas multiline = True. Définissez multiline = True dans la définition de 'ajax', ou remplacez-le par TextProperty(). Ce dernier est presque certainement la bonne réponse - TextProperties peut être plus long et n'est pas indexé.

3

L'erreur est dans votre modèle de compteur.

"ajax" doit être une propriété de chaîne multiligne. Voir le Types and Property Classes documentation.

Vous voulez faire:

ajax = db.StringProperty(multiline=True) 

Notez également que db.StringProperty ne peut être utilisé pour les chaînes de 500 caractères ou moins.