Если нужно что-то универсальное, то берется
REST Framework, но, конечно же, нужно читать документацию по нему.
На моей практике обычно подобные скрипты пишутся каждый раз, как в первый раз) Зависит от проекта, конечно.
По идее в твоем коде нужно проделать минимум изменений.
Во-первых, нужно скорректировать вьюху, чтобы она отдавала json-данные. Тут можно выбрать способ из нескольких вариантов. Например, с
class-based-views или заюзать декоратор render_to_json для обычной вьюхи из вспомогательного пакета
handy.
В клиентской части совсем простой код получится, если иcпользовать популярный фреймворк JQuery, конечно же.
$('.vote').on('click', function(ev){
ev.preventDefault();
var $this = $(this);
$.post($this.attr('data-url'))
.success(function(data){
if (data.error){
alert(data.error);
}else if (data.voted){
alert('Спасибо за ваш голос!');
}
})
.fail(function(){
alert('Возникла ошибка. Попробуйте позже.');
})
});
Соответственно у ссылки должен быть указан атрибут
data-url со ссылкой c ID для вьюхи vote.