【问题标题】:Python Django: Handling URL with Google App Engine - Post then GetPython Django:使用 Google App Engine 处理 URL - 发布然后获取
【发布时间】:2009-05-17 05:32:11
【问题描述】:

我有这样的设置:

class CategoryPage (webapp.RequestHandler):
def get(self):
    ** DO SOMETHING HERE **
def post(self):
    ** DO SOMETHING HERE **
    ** RENDER THE SAME AS get(self)

问题是,在我处理完发布的数据后,如何才能显示与 get(self) 函数相同的信息?

【问题讨论】:

    标签: python google-app-engine


    【解决方案1】:

    正如其他人所建议的那样,重定向确实有一些优势,但它是一种“重”的方法。作为替代方案,可以考虑将渲染部分重构为单独的辅助方法def _Render(self):,并通过调用self.Render() 来结束getpost 方法。

    【讨论】:

    • 你能否举一个小例子来说明如何实现它。
    【解决方案2】:

    调用 self.redirect(url) 通过 GET 将用户重定向回同一页面。这样一来,他们就不会在点击刷新时意外地重新提交表单。

    【讨论】:

      【解决方案3】:

      这通常不是一个好主意,因为它会引起混乱。你真的应该做任何你想做的事,然后将它们重定向到 get 方法。

      【讨论】:

        【解决方案4】:
        create_object(request, form_class=FormClass,
                post_save_redirect=reverse('-get-url-handler-',
                                           kwargs=dict(key='%(key)s')))
        

        我在通用视图中使用上述 django 快捷方式,您可以在其中指定保存后重定向,请输入您的情况。 这个 sn-p 中还有几个例子。 顺便说一句,根据问题的标题,我假设您正在使用带有 app engine 的 django (帮助程序或补丁)。 如果您使用的是应用引擎补丁,请查看“myapp”应用示例 add_person 处理程序中的 views.py 是否符合您的要求。

        【讨论】:

        • 我确实有 django 对应用引擎的帮助。如果您稍微解释一下上面的代码,是否有可能?谢谢。
        【解决方案5】:

        实际上,您的代码不是 Django,而是 webapp(Google 的迷你“框架”)。请阅读 Django 文档:http://docs.djangoproject.com/

        Django 的通用视图仅适用于 app-engine-patch。助手不支持他们。您可以查看 app-engine-patch 示例项目以了解有关 App Engine 上 Django 的更多信息:http://code.google.com/p/app-engine-patch/

        【讨论】:

          猜你喜欢
          • 2015-05-18
          • 2011-09-16
          • 1970-01-01
          • 2011-03-21
          • 1970-01-01
          • 2014-10-19
          • 2014-05-12
          • 2012-09-26
          • 1970-01-01
          相关资源
          最近更新 更多