如何使用Google App Engine重定向然后显示错误

时间:2009-10-08 14:44:43

标签: python google-app-engine

我正在开发一个收集用户提交的故事的Google App Engine项目。

这是我在Request Handler的post方法中处理提交错误的方法:

# get the title and content using self.request.get()
errors = []
if not title:
    errors.append("Please enter a title.")
if not content:
    errors.append("Please enter a story.")
if not errors:
    # create the story, save it to the database
    # redirect to the story's page
else:
    # pass the title and/or content to a template
    # pass the error message(s) to a template
    # the same template that displays the submission form is used here

问题:因为我的表单将帖子发送到 example.com/createstory.do - 如果有错误,我最终会重新显示该地址的表单页面。

我想要发生的事情:将用户重定向回他们提交表单的页面: example.com/Share ,同时显示错误消息并重新显示提交的表格数据。

最简单的方法是什么?

我知道我可以让 / Share 同时处理get和post请求,但是我正在寻找一个我可以使用的解决方案,即使这样做也不是一个选项。

2 个答案:

答案 0 :(得分:1)

如果您确定需要使用单独的网址,则可以重定向到/共享包含网址中GET变量中的错误。当然,这会使您的URL变得丑陋,因为它现在包含所有错误信息。

另一种选择是重定向回Share,并将错误存储在cookie或会话变量中。

在首先提交之前,将其中任何一个与Javascript中的客户端表单验证相结合,这样在大多数情况下都不会遇到丑陋的解决方案可能是最好的选择。

答案 1 :(得分:1)

没有'干净'的方法,因为你无法重定向POST请求(并且重定向的请求也会进行POST)。标准 - 也是最干净 - 的方法是在使用GET获取时使用相同的URL显示表单,并在使用POST获取时接受数据。