Избегайте изменения адреса при отправке GET-запроса (django)

У меня есть url http://127.0.0.1:8000/profile/question/1/ и на адресе есть форма

я хочу иметь кнопку нравится или не нравится на посте. все работает хорошо, но изменение url является проблемой.

это мой код - >

    def get_context_data(self, *args, **kwargs):
        self.object=self.get_object()
        context = super(QuestionDetail, self).get_context_data(**kwargs)

        if "like" or "dislike" in self.request.GET:

            if "like" in self.request.GET:
                if bool(Like.objects.filter(user=self.request.user, question=self.get_object())) == True:
                    pass
                else:
                    Like.objects.create(user=self.request.user, question=self.get_object())

            elif "dislike" in self.request.GET:
                if bool(DisLike.objects.create(user=self.request.user, question=self.get_object())) == True:
                    pass
                else:
                    DisLike.objects.create(user=self.request.user, question=self.get_object())

        try:
            question = Question.objects.get(id=self.kwargs["pk"])
            context['detail'] = question
        except ObjectDoesNotExist:
            return reverse("Profile:error")
<form class="float-right block">
   <button type="submit"  name="like" class="block mb-2"></button>
   <button type="submit"  name="dislike" class="block"></button>
</form>

когда я нажимаю, например, кнопку like, url меняется и становится http://127.0.0.1:8000/profile/question/1/?like=. как избежать этой проблемы? и в чем проблема?

спасибо

Это правильно. Когда у вас есть несколько кнопок отправки, на бэкенде у вас должен быть способ узнать, какая кнопка отправки была выбрана. Вы должны иметь имя и значения для каждой кнопки отдельно. Например:

<form class="float-right block">
   <button type="submit" name="type" value="like" class="block mb-2"></button>
   <button type="submit" name="type" value="dislike" class="block"></button>
</form>

Кнопка like отправит форму на:

http://127.0.0.1:8000/profile/question/1/?type=like

Кнопка dislike отправит форму на:

http://127.0.0.1:8000/profile/question/1/?type=dislike

Затем в бэкенде вы можете получить тип этой кнопки отправки, используя:

btype = request.GET.get('type', 'like')
# Or if the method of the form is POST use 
btype = request.POST.get('type', 'like')
Вернуться на верх