Сообщение об успехе в Django

В моем приложении django я ввожу форму. Как только эта форма проверена, я показываю сообщение об успехе с помощью Структура сообщений Django.

Текущее состояние

Я могу отобразить сообщение об успехе в шаблоне после отправки формы, когда я перенаправляю его на тот же URL-адрес (URL-адрес самой формы)

Мой views.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, просто щелкнув. скрыть форму, когда вы это сделаете, или сбросить ее

Lemayzeur 01.05.2018 18:15

Означает, что я должен внести изменения в свой шаблон, и, поскольку там есть views.py, я должен придерживаться redirect('form-url) - это то, что вы говорите Исправьте меня, если я ошибаюсь

Rookie_123 01.05.2018 18:31

отправьте вам html-коды, я сделаю это с

Lemayzeur 01.05.2018 18:36
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
3 967
1

Ответы 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;
});

Не могли бы вы также дать другие способы сделать это. Также, пожалуйста, дайте мне знать, если вы хотите что-нибудь еще

Rookie_123 02.05.2018 09:33

Другие вопросы по теме