Диалоговое окно Django / JqueryUI - Как я могу интегрировать Django с диалоговым окном JqueryUI? - PullRequest
2 голосов
/ 12 июня 2011

Я хочу добавить функцию в свой проект Django, используя диалоговое окно jQueryUI , где при нажатии на ссылку (например, ссылку «удалить») появляется диалоговое окно jQueryUI, спрашивающее вас, действительно ли вы хочу удалить этот элемент. Затем, если вы нажмете кнопку удаления (обнаружил диалоговое окно jQuery), функция Django выполнит работу по удалению.

Итак, как мне заставить кнопку удаления (найдено диалоговое окно jQuery) отправить сообщение (с соответствующими переменными) в функцию Django, найденную в моем views.py, которая будет выполнять работу по удалению?

Реальные примеры будут по-настоящему оценены!

Ответы [ 2 ]

9 голосов
/ 12 июня 2011

Скажем, у вас есть что-то вроде этого в вашем шаблоне:

<div id="dialog" title="Confirm delete">Are you sure?</div>
{% for object in object_list %}
# display whatever you like here
<a id="{{ object.id }}" class="delete" href="#">Delete</a>
{% endfor %}

Тогда что-то подобное (в вашем $(document).ready) будет работать - обратите внимание, как мы устанавливаем функцию обратного вызова, которую диалог вызывает, когданажата кнопка удаления (с использованием метода диалога ) в обработчике click:

$("#dialog").dialog({
    modal: true,
    autoOpen: false
});
$("a.delete").click(function(e) {
    e.preventDefault();
    var id = $(this).attr('id');
    $("#dialog").dialog('option', 'buttons', {
        "Delete": function() {
            $.post({
                url: {% url myapp.views.delete %},
                data: {'id': id},
                success: function() {
                   # whatever you like, some fancy effect that removes the object
                }
            });
            $(this).dialog("close");
        },
        "Cancel": function() {
            $(this).dialog("close");
        }
    });
    $("#dialog").dialog("open");
    return false;
});
2 голосов
/ 26 июня 2011

Вы также должны рассмотреть Aprise . Это прекрасно, использует JQuery, прост в использовании и очень маленький (3 КБ).

apprise('Hello now?', {'verify':true});

aprise dialog

...