python - Django FormView 在成功 POST 时不重定向
问题描述
我目前正在编写一个聊天应用程序。为了接受用户输入,我使用了一个表单,因此使用了一个 FormView 和一个自定义表单,遵循 Django-Docs。我必须设置一个success_url,但既不想在成功的POST上被重定向到另一个页面,也不想重新加载聊天页面。我该怎么做?
我已经阅读了以下帖子:Django FormView, Return without redirecting,但我并不真正理解答案的重点。我真的应该避免不重定向吗?如果没有,我真的可以用 JQuery-Ajax 实现吗?这与 Django 的 success_url 不冲突吗?
感谢您的回答!
解决方案
成功发布操作后,您可以简单地将 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 %}
推荐阅读
- java - 用于查找表的 Java JPA Spring 多重查询
- r - 按组对大于当前值的值求和
- apache-nifi - JSON属性上的NiFi路由
- python - 即使安装了 pygame,我也无法加载图像
- javascript - POST:REACT APP 上的 400 BAD REQUEST - 使用 Express
- sql - 使用 postgresql 准备布林带 - STDDEV 和 PARTITION BY
- java - 在 spark / java 上按 desc 限制的顺序加入数据帧
- android - 从动态创建的 TextInputEditText 中获取数据并将它们插入到数组中
- javascript - 如何将 JS/HTML 页面的结果以表格格式放置?
- javascript - 为什么箭头函数必须在调用函数之上声明