Как перехватить нажатие кнопки во вьюхе или почему вызывается функция, привязанная к кнопке, при обновлении страницы? (Django)

У меня на сайте надо реализовать публикацию или скрытие поста. Для этого я написал кнопку, которая меняет значение базы данных is_published на 0 или 1 при нажатии, однако значение is_published также меняется при обновлении страницы. Вот views.py:

def profile(request):
    user_now = User.objects.get(username=request.user.username)
    data = Bloger.objects.get(pk=user_now.channel_id_id)
    return render(request, 'users/profile.html', {'on_site': data,})

Это страница html:

{% if on_site.is_published == 0 %}
                  <button><a href="{{ on_site.change_published_on_1 }}" class="callback">Опубликовать</a></button>
                  <p>{{ on_site.is_published }}</p>
              {% else %}
                <button><a href="{{ on_site.change_published_on_0 }}" class="callback">Скрыть</a></button>
                  <p>{{ on_site.is_published }}</p>
              {% endif %}
Это models.py:

class Bloger(models.Model):
    is_published = models.IntegerField(default=0)
    
    def change_published_on_0(self):
        self.is_published = 0
        self.save()
        return reverse('users:profile')

    def change_published_on_1(self):
        self.is_published = 1
        self.save()
        return reverse('users:profile')

Вообще кнопка работает правильно - она меняет значение is_published с 0 на 1 и обратно, но также значение is_published меняется при обычном обновлении страницы. Что может быть не так? Я думаю, что это может происходить из-за того, что я прописал логику обновления is_published в models, а не во views, но я не понимаю как перехватить сигнал, что пользователь нажал на кнопку во views.

Вернуться на верх