Если бы я выбрал, я бы также пошел с реализацией отдельного представления для вашей цели.
В идеале, если бы django.contrib.auth
было повторно реализовано в представлениях на основе классов, вы могли бы повторно использоватьлогику смены пароля и писать свой код только для той части, которая возвращает ответ, более подходящий для AJAX.Но очень жаль, что мы не можем позволить себе такую роскошь, по крайней мере, для django 1.3 или более ранней версии.
Но чтобы ответить на ваш вопрос, да, есть альтернатива (или хак, я бы ее назвал), которая позволяетвам повторно использовать представление в django.contrib.auth
.Предполагая, что вы используете jQuery , при отправке формы смены пароля вы делаете запрос AJAX POST на сервер и ожидаете взамен html (как показано ниже).Возвращенный html такой же, как тот, который вы получите при использовании не-AJAX POST.
var post_url = $form.attr("action");
$.ajax({
type: "POST",
url: post_url,
data: $form.serialize()
}).done(function(html) {
// check the html and use that to determine what message to prompt back to your user
});