Google App Engine Python: перенаправить на ту же страницу, чтобы перезагрузить таблицу
У меня есть HTML-страница, где вы вводите информацию в форме, и когда вы нажимаете кнопку отправки, она перенаправляет страницу и обновляет таблицу с новой информацией. Я использовал "self.redirect('/')", и он перезагрузил все, но не обновил таблицу, пока я не обновил страницу вручную. Ниже мой код:
#Used to load up index.html
class MainHandler(webapp2.RequestHandler):
#HTML Get request to pull information from the datastore
def get(self):
title = "Video Game History"
template_vars = {
'title' : title, 'message' : "Enter the video game that you've played before..." }
template = JINJA_ENVIRONMENT.get_template('index.html')
self.response.out.write(template.render(template_vars))
#Pulls info from the datastore and displays it
self.query = MyGames.query()
self.response.write("""
<table>
<caption>Game History</caption>
<thead>
<tr>
<th>Name</th>
<th>Description</th>
<th>Company</th>
<th>Console</th>
<th>Genre</th>
<th>Recommend</th>
</tr>
</thead>
<tbody>
""")
for dbInfo in self.query:
self.response.write("""
<tr>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
<td>%s</td>
</tr>
""" % (dbInfo.name, dbInfo.description, dbInfo.company, dbInfo.console, dbInfo.genre, dbInfo.recommend))
self.response.write("""
</tbody>
</table>
""")
#self.response.write('<p>%s</p>' % dbInfo.name)
def post(self):
gameName = self.request.get("gameName")
gameDescription = self.request.get("gameDescription")
gameCompany = self.request.get("company")
gameConsole = self.request.get("console")
gameGenre = self.request.get("genre")
gameRecommend = self.request.get("recommend")
#If gameRecommend is checked, mark yes. Otherwise, mark no.
if gameRecommend == "Recommended":
gameRecommend = "Yes"
else:
gameRecommend = "No"
#Post the information into the datastore
myGames = MyGames(
name = gameName,
description = gameDescription,
company = gameCompany,
console = gameConsole,
genre = gameGenre,
recommend = gameRecommend)
myGames.put()
self.redirect('/')
Я что-то здесь не так делаю?
1 ответ
Это из-за возможной последовательности хранилища данных. Элементы, добавленные в хранилище данных, могут занять некоторое время, прежде чем они станут видимыми для запросов, которые не используют свой ключ напрямую. MyGames.query()
в твоем случае.