我是否需要为我的成功页面创建一个全新的视图?

时间:2014-01-15 20:59:31

标签: django django-models django-forms

我有一个表单,当用户提交有效信息(点击页面上的“提交”按钮)时,我目前正在重定向到成功页面。

class PostAdPage(CreateView):
    template_name = 'post_ad.html'
    success_url = '/awesome/'
    form_class = PostAdForm

    def form_valid(self, form):
        form.save()
        return HttpResponse("Awesome.")

我不希望重定向发生。相反,我希望显示HTTP响应来代替表单。

如果没有创建另一个视图来呈现提交的响应,有没有办法显示响应?

3 个答案:

答案 0 :(得分:1)

是,

成功操作后,重定向到新页面会更好,更安全。

如果您在POST方法上呈现响应,则用户可以刷新页面,表单将再次发送。如果您重定向到另一个页面,则不会出现此问题。

有关更详细的参数,请参阅http://en.wikipedia.org/wiki/Post/Redirect/Get

答案 1 :(得分:1)

改用JavaScript。

  • 用户填写表单。
  • 使用JavaScript,您可以将表单内容的POST执行到URL,并且在处理表单内容后,Django视图将返回成功或失败。视图可以返回带有您需要的任何信息的JSON响应(例如,错误消息),而不是返回HTML。
  • 如果失败,您可以显示错误消息。
  • 如果成功,您可以删除表单并使用成功消息替换表单的HTML。

答案 2 :(得分:1)

作为替代/更全面的解决方案,您可以考虑使用messages framework。 使用起来非常方便,并且可以避免一些额外的观看。