Обработка представлений форм django с помощью ajax

Я ищу более элегантный способ решения этой проблемы. Допустим, у меня есть две кнопки x, y в main.html:

<input class= "btn-check", name = "options", id="x">
<label class="btn btn-lg btn-info", for="x">x</label>
    
<input class= "btn-check", name = "options", id="y">
<label class="btn btn-lg btn-success", for="y">y</label>

После нажатия на кнопку я хочу сделать кое-что в python, и поэтому в django views я создам функцию представления для каждой из кнопок (моя текущая реализация):

def funcX(request):
    booleanX = doSomethingforX()
    return JsonResponse({"success": booleanX})

def funcY(request):
    booleanY = doSomethingforY()
    return JsonResponse({"success": booleanY})

а вызовы ajax будут следующими:

$("[id='x']").on("click", function(e){
    e.preventDefault();
    
    $.ajax({
        type:"GET",
        url: "{% url 'funcX' %}",           
        success: function(response){
            if(response.success == true){
                //Do something
            }
        }       
    })
});

Вызов ajax будет таким же для кнопки Y.

Теперь мне интересно, можно ли сделать это с формами? Скажем, html становится:

<form method="POST", class="form-group", id="post-form">
    <input type="submit", value="x", class= "btn-check", name = "options", id="x">
    <label class="btn btn-lg btn-info", for="x">x</label>

    <input type="submit", value="y", class= "btn-check", name = "options", id="y">
    <label class="btn btn-lg btn-success", for="y">y</label>

</form>

Затем в django views у меня есть представление для main.html. Таким образом, это экономит много представлений, написанных на django.

def main(request):
    
    if request.method == "POST" and request.POST["options"] == "x":
        booleanX = doSomethingforX()
        return JsonResponse({"success": booleanX})
    
    if request.method == "POST" and request.POST["options"] == "y":
        booleanY = doSomethingforY()
        return JsonResponse({"success": booleanY)})
    return render(request, "main.html")

Теперь проблема в том, что я не знаю, как написать вызовы ajax для получения от views и получения JsonResponse возврата для X и Y соответственно...

Есть идеи?

HTML

<form method="POST", class="form-group", id="post-form">
        {% csrf_token %}
        <input type="text" class= "btn-check" name = "options" id="options_input">
        <button type="submit" id="x">X</button>
        <button type="submit" id="y">Y</button>
</form>

JS

$('#x').click(function(){
    $('#options_input').val("X")
})
$('#y').click(function(){
    $('#options_input').val("Y")
})


$('body').on('submit','#post-form',function(e){
e.preventDefault();
var formData = new FormData(this);
$.ajax({
    type:"POST",
    url: "/url/",
    data: formData, 
    success: function(response){
    },
    error: function (response) {
    },
    cache: false,
    contentType: false,
    processData: false
})

});

ПРОСМОТРОВ

def main(request):
   if request.method == "POST":
       submitted_type = request.POST.get("options")
       if submitted_type == "X":
         doSomethingforX()
         return JsonResponse({"success": X)})
       else:
         doSomethingforY()
         return JsonResponse({"success": Y)})
   
Вернуться на верх