形式和输入Udacity

时间:2015-08-20 04:33:10

标签: python

我一直在处理同样的问题一个月,我仍然不知道如何修复我的代码。我正在进行udacity web开发课2.我已经在stackoverflow和Udacity上讨论了一段时间,但我不知道如何修复它。我知道有人完成了课程并完成了代码。有人可以发布代码,以便我可以看到它是如何完成的。我的代码发布在底部。 import webapp2

form="""  
<form method="post">
    What is your birthday?
    <br>
    <label>Month<input type="type" name="month"></label>
    <label>Day<input type="type" name="day"></label>
    <label>Year<input type="type" name="year"></label>
    <div style="color: red">%(error)s</div>
    <br>
    <br>
    <input type="submit">
</form> 
"""
def valid_year(year):
        if year and year.isdigit():
            year = int(year)
            if year > 1900 and year < 2020:
                return year

def valid_day(day):
        if day and day.isdigit():
            day = int(day)
            if day > 0 and day <= 31:
                return day

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

    month_abbvs = dict((m[:3].lower(),m) for m in months)

def valid_month(month):
        if month:
            short_month =  month[:3].lower()
            return month_abbvs.get(short_month)

class MainPage(webapp2.RequestHandler):

    def write_form(self, error=""):
        self.response.out.write(form % {"error": error})

    def get(self):
        self.write_form()
        self.valid_year(year)
        self.valid_day(day)
        self.valid_month(month)


    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_month and user_day and user_year):
            self.write_form("That doesn't look valid to me, friend.")
        else:
            self.response.out.write("Thanks! That's a totally valid day!")

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

2 个答案:

答案 0 :(得分:0)

`这是我的代码,它终于有效了。尝试它,它会工作

导入webapp2

形式= ''”         你的生日是什么?     

<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'>

   '''

月= ['一月',              '二月',              '游行',              '四月',              '可以',              '六月',              '七月',              '八月',              '九月',              '十月',              '十一月',              '腊']

month_abbvs = dict((m[:3].lower(), m) for m in months)

  def valid_month(month):
   if month:
       short_month = month[:3].lower()
       return month_abbvs.get(short_month)

  def valid_day(day):
   if day.isdigit():
      return int(day) if int(day) in range(1,32) else None
   else:
       return None
  def valid_year(year):
   if year.isdigit():
       return int(year) if int(year) in range(1900, 2021) else None
   else:
       return None

  class MainPage(webapp2.RequestHandler):
   def get(self):
       #self.response.headers['Content-Type'] = 'text/plain'
       self.response.out.write(form)

   def post(self):
       #self.response.headers['Content-Type'] = 'text/plain'
       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_day and user_year and user_month):
           self.response.out.write(form)
       else:
           self.response.out.write("Thanks! That's a totally valid day!")

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

答案 1 :(得分:0)

我很高兴认识一位Udacity学生:)

我现在正处于“后端”课程。

所以,你的代码中存在几个问题。

<强> 1。 IndentationError:意外缩进

  

months = ['Janurary',

one space before "months"
     

month_abbvs = dict((m [:3] .lower(),m)m个月)

four spaces before "month_abbvs"

<强> 2。 AttributeError:'MainPage'对象没有属性'valid_year'

  

self.valid_year(年)

     

self.valid_day(天)

     

self.valid_month(月)

valid_* methods are not in the "MainPage" class so delete the "self" keyword.

第3。 NameError:未定义全局名称'year'

  

实际上,“MainPage”类中的“get”方法仅用于show输入和   消息。

     

您的“表单”方法是“发布”。所以,你的参数只需要   “后”方法。

     

删除调用valid_ *代码的“get”方法。然后,它工作正常。