2011-05-07 3 views
3

Je suis nouveau à google app moteur/webapp et en essayant d'obtenir une application simple en cours d'exécution. L'application sera pour un service de location de voiture de démonstration. Je voudrais avoir un gestionnaire de demande pour ajouter de nouvelles voitures qui gère à la fois un get et un poste pour la page ajouter une voiture.Google App Engine obtenir et publier sur le même modèle

Le get devrait retourner un formulaire à remplir et à soumettre. Le poste devrait ajouter la voiture (je ne suis pas encore inquiet) et retourner une page similaire avec un formulaire et «voiture ajoutée avec succès» ou quelque chose de similaire.

Voici mon approche était:

Mapping URL:

application = webapp.WSGIApplication([('/employee/add/car', AddCar)], 
             debug=True) 

AddCar:

class AddCar(webapp.RequestHandler): 
    def get(self): 
     self.response.out.write(template.render('templates/addcar.html', {})) 

    def post(self): 
     self.response.out.write(template.render('templates/addcarsuccess.html', {})) 

addcar.html Modèle:

{% extends "base.html" %} 

{% block body %} 
    <h2>Add a Car</h2> 

    <form action="/employee/add/car" method="post"> 
     <label>Make</label> 
     <input type="text" name="make"></input> 
     <br/> 
     <input type="submit"></input> 
    </form> 
{% endblock body %} 

je reçois une réponse 405 Method Not Allowed wh fr Je soumets le formulaire ci-dessus.

J'ai essayé de faire des tirages, de lever des exceptions, etc. dans la fonction post juste pour voir si elle est appelée et qu'elle ne ressemble pas à ça.

J'ai essayé de sortir le message dans une classe séparée et cela a semblé fonctionner, mais je préfère les avoir dans le même gestionnaire.

J'espère qu'il me manque quelque chose de simple qui me permettra d'accomplir ceci.

Des idées?

Merci.

+1

Ça me semble bien. Il y a peut-être un problème d'espacement/indentation. Vous pouvez essayer de déplacer la méthode de publication au-dessus de l'entrée pour voir s'il y a un changement de comportement. –

+1

Je vais essayer ça merci. – JSchrantz

+0

J'ai déplacé le message au-dessus du get et j'ai commencé à recevoir des erreurs d'indentation dans la fonction get. Alors je l'ai réécrit en utilisant des espaces et ça a marché. Merci. – JSchrantz

Répondre

3

J'ai testé votre code et est correct, je suppose que la méthode originale post dans votre code a une erreur d'indentation.

+1

On dirait que c'était l'indentation. Je l'ai réécrit en utilisant des espaces et ça a marché. Je suis surpris qu'il n'ait pas jeté une exception d'indentation. Merci pour la réponse rapide. – JSchrantz

+1

@Jsch il n'a pas jeté l'erreur d'indentation probablement parce que, en raison de l'erreur d'indentation, la méthode 'post' a été déclarée dans le corps de la méthode' get'. – systempuntoout

+1

Bon point, je n'y ai pas pensé. – JSchrantz