首页 文章

Django中的成功消息

提问于
浏览
0

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

Current State

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

我的views.py

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

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

What I want

提交表单后,我想在同一页面上显示成功消息( 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')

The problem I am facing

我正在重定向到新的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 %}

2 回答

  • 0

    我遇到了同样的问题,这就是我所做的

    而不是从控制器重定向到另一个页面,首先添加查询参数?redirect ='/ newpage' . 并重定向到相同的上一页 .

    从JavaScript中捕获此查询参数并在几秒钟后延迟运行widow.location ='/ newpage'

  • 0

    有很多方法可以做你想做的事情,我告诉你一个方法来做一个 JsonResponse .

    views

    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;
    });
    

相关问题