3

Je viens donc de terminer le didacticiel de bienvenue au moteur de l'application google. Tout va bien jusqu'ici. J'ai alors décidé d'essayer d'ajouter un nouveau modèle de banque de données et de le définir dans le gestionnaire existant. J'ai ajouté un deuxième champ de contenu appelé "content2", puis j'ai essayé de le définir dans le gestionnaire Guestbook(), mais il continue à fonctionner. Je suis sûr que ce sera l'erreur la plus stupide, mais je suis perplexe atm. Des idées?Problème du didacticiel du moteur de l'application Google - nouveau modèle de banque de données

main.py

import cgi 

from google.appengine.api import users 
from google.appengine.ext import webapp 
from google.appengine.ext.webapp.util import run_wsgi_app 
from google.appengine.ext import db 
import os 
from google.appengine.ext.webapp import template 

class Greeting(db.Model): 
    author = db.UserProperty() 
    content = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 
    content2 = db.StringProperty(multiline=True) 


class MainPage(webapp.RequestHandler): 
    def get(self): 
    greetings_query = Greeting.all().order('-date') 
    greetings = greetings_query.fetch(1000) 

    if users.get_current_user(): 
     url = users.create_logout_url(self.request.uri) 
     url_linktext = 'Logout' 
    else: 
     url = users.create_login_url(self.request.uri) 
     url_linktext = 'Login' 

    template_values = { 
     'greetings': greetings, 
     'url': url, 
     'url_linktext': url_linktext, 
     } 


    path = os.path.join(os.path.dirname(__file__), 'index.html') 
    self.response.out.write(template.render(path, template_values)) 

class Guestbook(webapp.RequestHandler): 
    def post(self): 
    greeting = Greeting() 

    if users.get_current_user(): 
     greeting.author = users.get_current_user() 

    greeting.content = self.request.get('content') 
greeting.content2 = self.request.get('content') 
    greeting.put() 
    self.redirect('/') 

class HelloWorld(webapp.RequestHandler): 
    def get(self): 
    self.response.out.write('Hello, webapp World!') 



application = webapp.WSGIApplication(
            [('/', MainPage), 
             ('/sign', Guestbook)], 
            debug=True) 

def main(): 
    run_wsgi_app(application) 

if __name__ == "__main__": 
    main() 

index.html

<html> 
    <body> 
    {% for greeting in greetings %} 
     {% if greeting.author %} 
     <b>{{ greeting.author.nickname }}</b> wrote: Dogs name is: {{ pet.name }} 
     {% else %} 
     An anonymous person wrote: 
     {% endif %} 
     <blockquote>{{ greeting.content|escape }}</blockquote> 
    {% endfor %} 

    <form action="/sign" method="post"> 
     <div><textarea name="content" rows="3" cols="60"></textarea></div> 
     <div><input type="submit" value="Sign Guestbook"></div> 
    </form> 

    <a href="{{ url }}">{{ url_linktext }}</a> 

    </body> 
</html> 
+0

Quelle est l'erreur que vous obtenez? –

Répondre

5

Je ne vois rien de mal avec votre code. En haut de ma tête je dirais de vérifier l'espacement blanc devant votre nouvel élément.

À part cela, quel est le message d'erreur affiché? Le message d'erreur qui apparaît dans le journal est beaucoup plus convivial que le message d'erreur du navigateur.

+0

Ahh n'a pas pensé à vérifier les journaux sur le tableau de bord. Voici l'impression quand je l'ai téléchargé (utilisait auparavant le serveur de dev): : retrait inattendu (main.py, ligne 47) : inattendu indent (main.py, ligne 47) Je vais vérifier l'indentation mais toujours: S –

+0

Je voulais dire les journaux dans votre environnement de développement. L'invite de commande afficherait l'erreur comme l'erreur de tableau de bord en direct. Si cela a résolu votre problème, notez-le comme étant réputé :) – AutomatedTester

0

Yay fixé. Il s'avère que lors de la copie de html à notepad ++ il ne copiait pas les onglets correctement, et en utilisant seulement 2spaces au lieu d'un onglet pour les retraits.

J'ai lutté pendant des jours avec des erreurs python apparemment simples, alors peut-être cela va guérir quelques-uns.

Merci les gars - très apprécié.

+1

Le guide de style Python recommande fortement d'utiliser des espaces à la place des onglets: http://www.python.org/dev/peps/pep-0008/ –

+1

Aussi, vous pourriez vouloir marquer la question comme répondue afin que cela aide les gens dans le futur. –

+1

Bonne idée d'utiliser des espaces à la place des onglets pour n'importe quelle langue. – Phil

Questions connexes