2017-01-04 3 views
-4

Я хочу отобразить форму и после ввода введенных данных, если введенный день, месяц и год действительны. Спасибо, сообщение еще раз отображает форму, но проблема в том, когда я нажимаю кнопку submit Я не получаю никакого вывода, но только пустой экран. В процедуре Post есть некоторая ошибка.Мой код не дает корректного вывода

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

Попытайтесь объяснить, что означает «правильный» вывод. Вы также должны включить сообщение об ошибке. Посмотрите на пример кода, он должен просто отображать форму, в которой вы написали. Что вы ожидаете? –

+0

Вопросы, требующие помощи по отладке (** «почему этот код не работает?» **) должен включать в себя желаемое поведение, * конкретную проблему или ошибку * и * самый короткий код, необходимый для воспроизведения ** в самом вопросе **. Вопросы без ** ясного заявления о проблеме ** не полезны для других читателей. См. [Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve). – MattDMo

+0

Вот учебник: http://wsgi.tutorial.codepoint.net/parsing-the-request-post – GAEfan

ответ

0

Проблема была в том, что вы неправильно вызывали функции проверки. Самое простое решение, это просто поставить бизнес-логики за пределами класса, как:

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) 

Если вы намерены иметь его в классе, то вы будете иметь, чтобы сделать что-то вроде

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) 
Смежные вопросы