我是一個開發noob的應用程序。我使用pycharm編寫代碼,並將它與谷歌應用程序引擎連接起來,因此我可以使用JetBrains提供的便捷運行&調試功能來測試我的代碼。我在同一個目錄中有一個單獨的文件,名爲validation.py,其中包含valid_month,valid_day,valid_year函數。我碰到的問題是這個(我很困惑在這一點上)。這個代碼早些時候正在生成一個HTML頁面,其中顯示了表單數據(我認爲這與我的get(self)函數被更改爲write_form因爲它不是更早)有關,但即使表單數據是顯示,我會輸入用戶所需的信息,頁面將只處理像「get」這樣的數據並將數據放入URL中。現在,與write_form我甚至沒有生成一個頁面,我只是得到錯誤。請記住,我通過CS253 Udacity Web開發課程來完成此任務,因此我的代碼模仿了該課程,除了我使用的是webapp而不是webapp2。Pycharm&Google App引擎呈現請求發佈數據的問題
下面是代碼
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from validation import valid_day, valid_month, valid_year
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
month_abbvs = dict((m[:3], m) for m in months)
def valid_month(user_month):
return True
def valid_day(user_day):
return True
def valid_year(user_year):
return True
form ="""
<form method="post">
What is your birthday?
<br>
<label>Month <input type="text" name="month" value="%(month)s"></label>
<br>
<label>Day <input type="text" name="day" value="%(day)s"></label>
<br>
<label>Year <input type="text" name="year" value="%(year)s"></label>
<div style="color:red">%(error)s</div>
<br>
<br>
<input type="submit">
</form>
"""
class OTWHandler(webapp.RequestHandler):
def write_form(self, error=""):
self.response.out.write(form % {"error": error})
def get(self):
self.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_month and user_day and user_year):
self.write_form("Invalid entry")
else:
self.response.out.write("That is totally a valid day!")
def main():
app = webapp.WSGIApplication([('/', OTWHandler)], debug=True)
util.run_wsgi_app(app)
以下是錯誤
Traceback (most recent call last):
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 1536, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 1530, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files\Google\google_appengine\lib\webapp2\webapp2.py", line 570, in dispatch
return method(*args, **kwargs)
File "C:\Users\Madrigal\PycharmProjects\OTW\otw.py", line 42, in get
self.write_form()
File "C:\Users\Madrigal\PycharmProjects\OTW\otw.py", line 39, in write_form
self.response.out.write(form % {"error": error})
KeyError: 'month'
您的回答也十分讚賞。謝謝。
我很感激! – madman2890
@ madman2890沒問題 - 萬事如意! – RocketDonkey