Django FormView在成功POST时不重定向



我目前正在编写一个聊天应用程序。为了获得用户输入,我使用了一个Form,从而使用了FormView和一个自定义Form,遵循Django文档。我必须设置一个success_url,但既不想在成功POST时重定向到另一个页面,也不想重新加载聊天页面。我该怎么做?

我读过以下帖子:Django FormView,返回而不重定向,但我真的不明白答案的意义。我真的应该避免不重定向吗?如果没有,我真的可以用JQueryAjax实现这一点吗?这和Django的成功不冲突吗?

谢谢你的回答!

成功后,您可以简单地将URL重定向到成功URL,如:

success_url = '%s?success=1' % reverse('index_page')
return HttpResponseRedirect(success_url)

在你的html模板中检查

{% if success == 1 %}
<h3> Data uploaded successfully</h3>
{% endif %}

您可以使用django消息传递并覆盖get_success_url方法,如:

from django.contrib import messages
def get_success_url(self):
messages.add_message(self.request, messages.INFO, 'form submission success')
return reverse('index_page'))

在模板上这样做:

{% if messages %}
<ul class="messages">
{% for message in messages %}
<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}

最新更新