Вам нужно будет использовать AJAX
вызов, чтобы отправить запрос POST
на ваш сервер, а затем вернуть ответ на вашу HTML-страницу.
Пример:
вид
def process_like(request):
post_id = request.POST['post_id']
post = Post.objects.get(id=post_id)
post.process_likes()
return JsonResponse({"message": "Success"})
URLs
urlpatterns = [
...
path('process_like/', views.process_like, name="process_like")
...
]
HTML / JS
<div class="post" data-post-id="{{post.id}}">this is the post</div>
<script>
var posts = document.querySelectorAll('.post')
posts.forEach(post => {
post.addEventListener('click', e => {
e.preventDefault()
var post_id = post.getAttribute('data-post-id')
var config = {
method: "POST",
body: {post_id: post_id}
headers: {
"X-CSRFToken": "{{ csrf_token }}",
"Accept": "application/json",
"Content-Type": "application/json"
},
}
fetch('{% url "process_like" %}', config)
.then(response => response.json())
.then(data => console.log(data))
})
})
</script>
Или, если вы используете jQuery
<script>
$('.post').on('click', function (e) {
e.preventDefault();
var $this = $(this);
var post_id = $this.data('post-id');
$.ajax({
method: "post",
url: "{% url 'process_like' %}",
data: {csrfmiddlewaretoken: "{{ csrf_token }}", post_id: post_id}
}).done(function (response) {
console.log(response)
})
})
</script>