我一直在处理同样的问题一个月,我仍然不知道如何修复我的代码。我正在进行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)
答案 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”方法。然后,它工作正常。