Html-форма в Django возвращает none

Я пытаюсь сохранить эту HTML форму в моей таблице в базе данных, но получаю ошибку "None". Я занимаюсь этим уже около часа. Пожалуйста, любая помощь будет оценена по достоинству enter image description here

Пожалуйста, как мне это исправить

Это HTML order.html, который я создал

 <form action="" method="post" id="payment-form">
                      <input type="text" class="form-control" id="first_name" 
                        name="first_name"
                        value="{{request.user.first_name}}">
                   
                    <textarea type="text" class="form-control" id="address" name="address" 
                    placeholder="1234 Main St" required></textarea>
               
                <button id="submit" class="btn btn-success lg w-100 fw-bold" >
                  Proceed to Payment
                </button>

</form>

Вот мой views.py

def add(request):
    basket = Basket(request)
    if request.POST.get("action") == "post":
        order_key = request.POST.get("order_key")
        user_id = request.user.id
        baskettotal = basket.get_total_price()
        first_name = request.POST.get("first_name")
        last_name = request.POST.get("last_name")
        address = request.POST.get("address")
        print(first_name, last_name, address)

        order = Order.objects.create(
                    first_name = first_name,
                    address=address,
                    total_paid=baskettotal,
                    
            )
            order_id = order.pk
        response = JsonResponse({"success": "Order created"})
        return response

Файл js


<script type="text/javascript">

  function makePayment(e) {
    e.preventDefault();
    
    $.ajax({
      type: "POST",
      url: '{% url "order:add" %}',
      data: {
        csrfmiddlewaretoken: "{{csrf_token}}",
        action: "post",
      },
      success: function (json) {
        console.log(json.success)
      },
      error: function (xhr, errmsg, err) {},
    });

   
  }
</script>

Прежде всего, вам не нужно размещать дополнительное значение action для определения запроса, вам просто нужно использовать request.method он вернет вам все доступные методы, вы можете проверить конкретный метод, добавив проверку следующим образом

if request.method == "POST":

примечание : всегда используйте метод с заглавной буквы при добавлении этой проверки
и я не уверен, где вы вызываете функцию makePayment(), и к каким бы данным вы не пытались получить доступ в вашем скрипте python, вы должны передать их через ajax{data:{}} вот так

 function makePayment(e) {
    e.preventDefault();
    
    $.ajax({
      type: "POST",
      url: '{% url "order:add" %}',
      data: {
        csrfmiddlewaretoken: "{{csrf_token}}",
        order_key : "your order key",
        first_name : $('#first_name').val(),
        last_name : $('#last_name').val(),
        address : $('#address').val()
      },
      success: function (json) {
        console.log(json.success)
      },
      error: function (xhr, errmsg, err) {},
    });
   
  }

и затем получить доступ к нему следующим образом

def add(request):
    basket = Basket(request)
    if request.method == "POST":
        order_key = request.POST.get("order_key")
        #....all other fields
Вернуться на верх