在我的django应用程序中,我正在进行表单输入。一旦该表单被验证,我在Django Message Framework的帮助下显示成功消息。
当前状态
当我将表单重定向到相同的url(表单的url)时,我能够在提交表单后在模板中显示成功消息
我的views.py
if form.is_valid():
form_data = form.save()
messages.success(request, 'Submited Successfully')
return redirect('form-url')
我想要什么
提交表单后,我想在同一页面上显示成功消息(form-url
),然后我想重定向到新的网址list-of-submitted-forms
。
为此,我对views.py
做了类似的事情 if form.is_valid():
form_data = form.save()
messages.success(request, 'Submited Successfully')
return redirect('list-of-submitted-forms')
我面临的问题
我正在重定向到新的url.But而没有在form-url
页面上获得成功消息。当我转到form-url
页面时(通过单击重定向到该URL的按钮),该消息也是如此显示'Submited Successfully'
我的HTML / JS
<script>
{% if messages %}
{% for message in messages %}
{% if message.tags == "success" %}
swal({text:"{{ message }}",icon: "success",timer: "4000",buttons: false})
{% endif %}
{% endfor %}
{% endif %}
答案 0 :(得分:0)
我遇到了同样的问题,这就是我所做的
首先添加查询参数?redirect ='/ newpage',而不是从控制器重定向到另一个页面。并重定向到相同的上一页。
从JavaScript中捕获此查询参数和 几秒钟后延迟运行widow.location ='/ newpage'
答案 1 :(得分:0)
有很多方法可以做你想做的事情,我用JsonResponse
告诉你一种方法。
<强>视图强>
from django.http import JsonRespon
from django.core.urlresolvers import reverse
if form.is_valid():
form_data = form.save()
response = {'msg':'Submited Successfully',
'url':reverse('list-of-submitted-forms'),
'created':True}
return JsonResponse(response)
<强> JS 强>
$("#your_form").submit(function(){
var formData = new FormData($(this)[0]);
$.ajax({
url:"URL",
type:'POST',
data:formData,
processData: false,
contentType: false,
success: function(data){
if(data.created){
alert(data.msg); // handle the message , till the user click ok, and redirect to data.url
window.location.href = data.url;
}
else{
$("your_form").html($("your_form",data));
}
},
error:function(){
alert("error");
}
});
return false;
});