2017-01-04 4 views
-4

je veux afficher un formulaire et après avoir obtenu les détails saisis, si le jour, le mois et l'année est entré affichage valide Merci appareil affiche un message d'autre forme à nouveau, mais le problème est quand je cliquez sur soumettre bouton Je n'ai pas de sortie mais seulement un écran vide. Il y a une erreur dans la procédure Post.Mon code ne donne pas une sortie correcte

import webapp2 
form=""" 
<form method="post"> 
    When is ur birthday? 
    <br> 
    <label> Month 
     <input type="text" name="month"> 
    </label> 
    <label> Day 
     <input type="text" name="day"> 
    </label> 
    <label> Year 
     <input type="text" name="year"> 
    </label> 
    <br> 
    <br> 
    <input type="submit"> 
</form> 
""" 

class MainPage(webapp2.RequestHandler): 
    months = ['January', 
       'February', 
       'March', 
       'April', 
       'May', 
       'June', 
       'July', 
       'August', 
       'September', 
       'October', 
       'November', 
       'December'] 
    def valid_month(month): 
     month= month.capitalize() 
     if month in months: 
      return month 
     else: 
      return None 

    def valid_day(day): 
     if day and day.isdigit(): 
      if int(day) in range(1, 32): 
       return int(day) 
     return None 

    def valid_year(year): 
     if year and year.isdigit(): 
      if int(year) in range (1900, 2021): 
       return int(year) 
     return None 

    def get(self): 
     self.response.out.write(form) 

    def post(self): 
     user_month = valid_month(self.request.get("month")) 
     user_day = valid_day(self.request.get("day")) 
     user_year = valid_year(self.request.get("year")) 
     if not (user_year and user_day and user_month): 
      self.response.out.write(form) 
     else: 
      self.response.out.write("Thanks!") 


app = webapp2.WSGIApplication([ 
    ('/', MainPage), 
], debug=True) 
+0

Essayez d'expliquer ce que signifie une sortie «correcte». Vous devriez également inclure un message d'erreur. En regardant l'exemple de code, il faut simplement afficher le formulaire que vous avez écrit. Que vous attendez-vous arriver? –

+0

questions visant à obtenir l'aide de débogage (** « pourquoi est-ce pas le code de travail? » **) doit inclure le comportement souhaité, * un problème ou une erreur spécifique * et * le code le plus court nécessaire * de le reproduire ** dans la question elle-même **. Les questions sans ** un énoncé de problème clair ** ne sont pas utiles aux autres lecteurs. Voir: [Comment créer un exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve). – MattDMo

+0

Voici le tutoriel: http://wsgi.tutorial.codepoint.net/parsing-the-request-post – GAEfan

Répondre

0

La question est que vous n'appelez pas correctement les fonctions de contrôle. Le correctif est plus facile que de mettre la logique métier en dehors de la classe comme:

import webapp2 

form=""" 
<form method="post"> 
    When is ur birthday? 
    <br> 
    <label> Month 
     <input type="text" name="month"> 
    </label> 
    <label> Day 
     <input type="text" name="day"> 
    </label> 
    <label> Year 
     <input type="text" name="year"> 
    </label> 
    <br> 
    <br> 
    <input type="submit"> 
</form> 
""" 

months = ['January', 
      'February', 
      'March', 
      'April', 
      'May', 
      'June', 
      'July', 
      'August', 
      'September', 
      'October', 
      'November', 
      'December'] 

def valid_month(month): 
    month= month.capitalize() 
    if month in months: 
     return month 
    else: 
     return None 

def valid_day(day): 
    if day and day.isdigit(): 
     if int(day) in range(1, 32): 
      return int(day) 
    return None 

def valid_year(year): 
    if year and year.isdigit(): 
     if int(year) in range (1900, 2021): 
      return int(year) 
    return None 


class MainPage(webapp2.RequestHandler): 

    def get(self): 
     self.response.out.write(form) 

    def post(self): 
     user_month = valid_month(self.request.get("month")) 
     user_day = valid_day(self.request.get("day")) 
     user_year = valid_year(self.request.get("year")) 
     if not (user_year and user_day and user_month): 
      self.response.out.write(form) 
     else: 
      self.response.out.write("Thanks!") 


app = webapp2.WSGIApplication([ 
    ('/', MainPage) 
], debug=True) 

Si vous avez l'intention de l'avoir au sein de la classe, alors vous allez devoir faire quelque chose comme

import webapp2 

form=""" 
<form method="post"> 
    When is ur birthday? 
    <br> 
    <label> Month 
     <input type="text" name="month"> 
    </label> 
    <label> Day 
     <input type="text" name="day"> 
    </label> 
    <label> Year 
     <input type="text" name="year"> 
    </label> 
    <br> 
    <br> 
    <input type="submit"> 
</form> 
""" 

class MainPage(webapp2.RequestHandler): 

    def valid_month(self, month): 
     months = ['January', 
       'February', 
       'March', 
       'April', 
       'May', 
       'June', 
       'July', 
       'August', 
       'September', 
       'October', 
       'November', 
       'December'] 

     month= month.capitalize() 
     if month in months: 
      return month 
     else: 
      return None 

    def valid_day(self, day): 
     if day and day.isdigit(): 
      if int(day) in range(1, 32): 
       return int(day) 
     return None 

    def valid_year(self, year): 
     if year and year.isdigit(): 
      if int(year) in range (1900, 2021): 
       return int(year) 
     return None 

    def get(self): 
     self.response.out.write(form) 

    def post(self): 
     user_month = self.valid_month(self.request.get("month")) 
     user_day = self.valid_day(self.request.get("day")) 
     user_year = self.valid_year(self.request.get("year")) 
     if not (user_year and user_day and user_month): 
      self.response.out.write(form) 
     else: 
      self.response.out.write("Thanks!") 


app = webapp2.WSGIApplication([ 
    ('/', MainPage) 
], debug=True)