Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Form submit 如何使用Python在Google应用程序引擎上实现Post redirect get?_Form Submit_Post Redirect Get - Fatal编程技术网

Form submit 如何使用Python在Google应用程序引擎上实现Post redirect get?

Form submit 如何使用Python在Google应用程序引擎上实现Post redirect get?,form-submit,post-redirect-get,Form Submit,Post Redirect Get,我正在用Python在Google App Engine上开发一个在线竞价系统。关于post-redirect-get机制,我在谷歌上搜索了一段时间,仍然不清楚如何实现它。假设: HTML: 我有两个问题: 1) 呈现响应消息文件后,接下来应该做什么?也就是说,如何实现“GET” 2) 我能想到的另一个策略是:如果post应该只发生一次(例如,使用唯一订单号购买产品),我是否可以在实体中设置一个标志,指示表单已提交,并且如果设置了该标志,则将忽略以下post?这是可行的还是正确的 (注意:由于订

我正在用Python在Google App Engine上开发一个在线竞价系统。关于post-redirect-get机制,我在谷歌上搜索了一段时间,仍然不清楚如何实现它。假设:

HTML:

我有两个问题:

1) 呈现响应消息文件后,接下来应该做什么?也就是说,如何实现“GET”

2) 我能想到的另一个策略是:如果post应该只发生一次(例如,使用唯一订单号购买产品),我是否可以在实体中设置一个标志,指示表单已提交,并且如果设置了该标志,则将忽略以下post?这是可行的还是正确的

(注意:由于订单编号是由系统生成的,因此必须在提交表单之前保存实体才能获得该编号)


提前感谢。

您想要的是构建一个Restful服务,如下所示:

class BiddingHandler(webapp2.RequestHandler):
    def get(self):
        #Get code goes here for this handler

    def post(self):
        #code that gets your posted data and processes it

    def delete(self):
        #code to delete something

app = webapp2.WSGIApplication([('/bidding', BiddingHandler)])
综上所述,如果您想在文章的最后一行中制作文章而不是呈现模板后进行重定向,您只需使用以下行将用户重定向到处理程序的get部分:

self.response.redirect('/bidding')

我上面向你们展示的是实现它的正确方法。写入数据存储并为每个请求读取数据将意味着更多的开销和成本。

嘿,我没想到会有这么简单的解决方案。非常好,非常感谢,Tkingovr。同样的,我在这里也遇到了同样的问题,我不相信是这么简单,很高兴我能帮上忙!我在post-redirect-get-path中没有问题,但是在delete-redirect-get-path中有问题。删除过程完成后,我简单地将self.rediret_改为(“my-handler-name”),就像我的post方法中那样,但我得到的是另一个delete,而不是get。(意思是删除重定向删除而不是删除重定向获取)您是否遇到类似情况?在我阅读和之后,我知道我应该返回状态代码303而不是302。所以改为self.redirect_to('my-handler-name',_code=303)可以得到我想要的。
class BiddingHandler(webapp2.RequestHandler):
    def get(self):
        #Get code goes here for this handler

    def post(self):
        #code that gets your posted data and processes it

    def delete(self):
        #code to delete something

app = webapp2.WSGIApplication([('/bidding', BiddingHandler)])
self.response.redirect('/bidding')