【问题标题】:Success message in DjangoDjango中的成功消息
【发布时间】:2018-05-01 16:12:46
【问题描述】:

在我的 django 应用程序中,我正在输入表单。一旦验证该表单,我将在 Django Message Framework 的帮助下显示成功消息。

当前状态

提交表单后,当我将模板重定向到相同的 url(表单本身的 url)时,我能够在模板中显示成功消息

我的意见.py

if form.is_valid():
    form_data = form.save()

    messages.success(request, 'Submited Successfully')
    return redirect('form-url')

我想要什么

提交表单后,我想在同一页面上显示一条成功消息(form-url),然后我想重定向到一个新的 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。但是在 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 %}

【问题讨论】:

  • 您可以删除视图中的return redirect('list-of-submitted-forms'),并让消息显示在模板中,其中包含一个链接,只需单击即可将用户重定向到list-of-submitted-forms。当你这样做时隐藏表单,或者重置它
  • 意味着我应该在我的模板中进行更改,并且就views.py 而言,我应该坚持使用redirect('form-url) 就是你说的如果我错了请纠正我
  • 发给你html代码,我会用

标签: python django


【解决方案1】:

有很多方法可以做你想做的事,我向你展示了一种使用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;
});

【讨论】:

  • 能否请您也提供其他方法。如果您还需要其他方法,请告诉我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
  • 2019-04-19
  • 1970-01-01
  • 2014-10-30
  • 2019-12-14
  • 2022-08-06
相关资源
最近更新 更多