Если коротко, то я бы сделала так:
Делаете представление, которое принимает request.POST (в нем передаете например ID публикации) и отдает json информацию, что-то типа того:
pub = <your_model>.objects.get(pk=request.POST['id'])
... Проводите манипуляции с принятыми данными, в вашем случае обновляете поле "like" вашей публикации как +1
Потом что-то типа того:
count = pub.likes
response = HttpResponse()
response['Content-Type'] = "text/javascript"
response.write(serializers.serialize(
"json", count)
)
return response
Ставите это представление на url (например 'update_likes')
Потом посылаете ajax post-запрос (можно с помощью jQuery)
$.ajaxSetup({
beforeSend: function(xhr, settings) {
if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
xhr.setRequestHeader("X-CSRFToken", csrftoken);
}
}
});
$.post({% url 'update_likes' %}, { 'id': {{ pub.id }} }, function(data) {
# что-то делаете с data;
};
} );
Функцию для csrf можно отсюда взять https://docs.djangoproject.com/en/1.9/ref/csrf/