Можно ли таким образом обратиться к button?

Можно ли так обратиться к определенной кнопке на странице HTML и продиктовать ей определенные действия?

views.py

if request.method == 'POST':
        if request.POST.get('abc'):
           ......

        if request.POST.get('bbc'):
           .....

html

<form action="{% url 'new_channel' %}" method = "post">
 {% csrf_token %}
<button name="abc" type="submit"></button>
 .......
<button name="bbc" type="submit"></button>
</form>

Заранее спасибо.


Ответы (1 шт):

Автор решения: Vadim.Sharoikin

Можно с помощью ajax. создаём наш ajax, который будет отсылает запрос на сервер по указанному URL при нажатии на кнопку( class="mybutton") и получать от него ответ в success: function(data){...}, ответ будет виден в консоли браузера.

let data = {}

$('.mybutton').on('click', function(e){
    data['action'] = 'some_result';
    SendAjax();
});


function SendAjax(){
    $.ajax({
        url: 'url_обработчика_функции ',
        method: 'POST',
        data: data,
        cached: true,
        success: function(data){
            console.log(data);
        },
        error: function(e){
            console.log(e);
        }
    })
  }
})

views.py

from django.views.generic import View
from django.http import JsonResponse


class MyAction(View):
    def post(self, *args, **kwargs):
            data = {}

            # Получаем данные из запроса
            action = self.request.POST.get('action')

            # Проверяем что значение соответствует ожидаемому
            # и возвращаем значение(в данном случае 1)
            if action == 'some_result':
                data['result'] = 1
            else:
                data['result'] = 'Error'
            return JsonResponse(data)

ну и сама кнопка

<input type="submit" class="mybutton" value="получить что-то">

так же со второй кнопкой. Потом результат выводить на страницу

→ Ссылка