我正在阅读有关数据存储异常处理here和可能的错误here但我在实现它时遇到问题。这是我所做的示例代码。
try:
example.put()
except datastore_errors.TransactionFailedError:
self.response.write('Transaction failed, try again.')
当我尝试加载页面时,没有任何内容出现。我已经构建了一个与我的数据库交互的小接口,但是没有显示出来。如果我删除了try / except语句,一切正常。
我做错了什么? 为什么没有显示任何东西呢?它不应该至少显示HTML模板,只是在我尝试将某些内容放入数据库时抛出错误吗?
修改的 添加了处理程序代码,更多信息
我在这里做的是我有一个页面,我选择一个数据库。根据我的选择,我打开了一个模板,用于将实例轻松添加到该数据库。到目前为止,我只为一个数据库创建了一个模板。我也在使用MathJax库并且在发布之前有检查按钮来检查输入。
当我实现try / except语句时,nothings会被渲染。甚至是第一页,它使用完全不同的处理程序。我想知道为什么以及try / except语句有什么问题。
希望有所帮助。
class MainPage(webapp2.RequestHandler):
def get(self):
page = env.get_template('main.html')
self.response.out.write(page.render())
class DatabaseHandler(webapp2.RequestHandler):
def get(self):
database = self.request.get('db')
mathPage = env.get_template('mp_database.html')
menuPage = env.get_template('mi_database.html')
if database == 'mathproblem':
self.response.write(mathPage.render())
elif database == 'menuitem':
self.response.write(menuPage.render())
def post(self):
submit = self.request.get('submit')
if submit == 'Submit':
page = env.get_template('mp_database.html')
problem = self.request.get('problem')
problem_db = MathProblem(task=problem)
problem_db.put()
value = {'added': '\(' + problem + '\)' + ' ' 'added'}
self.response.write(page.render(value))
elif submit == 'Check':
page = env.get_template('mp_database.html')
problem = self.request.get('problem')
values = {'displayed': '$$' + problem + '$$',
'problem': problem, 'text': 'Problem'}
self.response.write(page.render(values))
app = webapp2.WSGIApplication([
('/', MainPage),
('/database', DatabaseHandler),
], debug=True)