2009-10-08 7 views
1

Je travaille sur un projet de Google App Engine qui recueille des histoires soumises par les utilisateurs.Comment rediriger puis afficher les erreurs avec Google App Engine

Voici comment je gère les erreurs de soumission dans la méthode post de ma demande Handler:

# get the title and content using self.request.get() 
errors = [] 
if not title: 
    errors.append("Please enter a title.") 
if not content: 
    errors.append("Please enter a story.") 
if not errors: 
    # create the story, save it to the database 
    # redirect to the story's page 
else: 
    # pass the title and/or content to a template 
    # pass the error message(s) to a template 
    # the same template that displays the submission form is used here 

Le problème: depuis mon formulaire envoie les messages à example.com/createstory.do - si il y a des erreurs que je finis par réafficher la page de formulaire à cette adresse.

Ce que je veux arriver: rediriger l'utilisateur vers la page où ils ont présenté la forme: example.com/Share, tout en même temps l'affichage des messages d'erreur et réafficher les données de formulaire soumis.

Quelle est la manière la plus facile de faire cela?

Je sais que je pourrais juste avoir /Share gérer à la fois obtenir et envoyer des demandes, mais je suis à la recherche d'une solution que je peux utiliser même si cela ne serait pas une option.

Répondre

1

Vous pouvez rediriger vers/Partager incluant les erreurs dans une variable GET dans l'URL, si vous êtes absolument sûr que vous devez utiliser des URL distinctes. Bien sûr, cela rend votre URL moche car elle contient maintenant toutes les informations d'erreur.

Une autre option serait de rediriger à partager et avoir les erreurs stockées dans les cookies ou dans une variable de session.

La combinaison de l'une de ces avec la validation de formulaire côté client Javascript avant de soumettre en premier lieu si la solution laide n'est pas touché dans la plupart des cas pourrait être la meilleure option.

+0

serait-il acceptable d'utiliser quelque chose comme urllib pour demander une page et les en-têtes? docs: http://code.google.com/appengine/docs/python/urlfetch/overview.html – wings

1

Il n'y a aucun moyen « propre » de le faire, parce que vous ne pouvez pas rediriger les requêtes POST (et ont la demande redirigée aussi faire un POST). L'approche standard - et la plus propre - consiste à afficher la même URL dans le formulaire lors de l'extraction avec GET et à accepter les données lors de l'extraction avec POST.

Questions connexes