Как я могу получить данные для отправки в мои представления django из моих html и javascript

Недавно я добавил функцию tag-input в свою форму с помощью Javascript, но я не могу получить данные из tag-input. Я получаю integrityError при отправке формы, потому что я не могу получить данные из tag-input.

Я также пробовал использовать функцию отправки ajax, но она также не работает. Я пытаюсь получить значения в формате JSON, чтобы потом распечатать список характеристик.

views.py

garage = request.POST['garage']
            telephone = request.POST.get('telephone', False)
            features = request.GET.get('features')

html

<label>Property Features: </label>

                                            <div class="tag-wrapper">
                                            <div class="tag-content">
                                              <p>Press enter or add a comma after each tag</p>
                                              <ul name="features-ul"><input type="text" spellcheck="false" name="features">
                                            </ul>
                                            </div>
                                            <div class="tag-details">
                                              <p><span>16</span> tags are remaining</p>
                                              <button>Clear All Tags</button>
                                            </div>
                                          </div>

                                        </div>

javascript

            const ul = document.querySelector("ul[name=features-ul]"),
input = document.querySelector("input[name=features]"),
tagNumb = document.querySelector(".tag-details span");

let maxTags = 16,
tags = ["coding"];
var features = {"input[name=features]" : tags}

countTags();
createTag();

function countTags(){
    input.focus();
    tagNumb.innerText = maxTags - tags.length;
}

function createTag(){
    ul.querySelectorAll("li").forEach(li => li.remove());
    tags.slice().reverse().forEach(tag =>{
        let liTag = `<li>${tag} <i class="uit uit-multiply" onclick="remove(this, '${tag}')"></i></li>`;
        ul.insertAdjacentHTML("afterbegin", liTag);
    });
    countTags();
}

function remove(element, tag){
    let index  = tags.indexOf(tag);
    tags = [...tags.slice(0, index), ...tags.slice(index + 1)];
    element.parentElement.remove();
    countTags();
}

function addTag(e){
    if(e.key == "Enter"){
        let tag = e.target.value.replace(/\s+/g, ' ');
        if(tag.length > 1 && !tags.includes(tag)){
            if(tags.length < 16){
                tag.split(',').forEach(tag => {
                    tags.push(tag);
                    createTag();
                });
            }
        }
        e.target.value = "";
    }
}

input.addEventListener("keyup", addTag);

const removeBtn = document.querySelector(".tag-details button");
removeBtn.addEventListener("click", () =>{
    tags.length = 0;
    ul.querySelectorAll("li").forEach(li => li.remove());
    countTags();
});

$(document).ready(function() {
    $(window).keydown(function(event){
      if(event.keyCode == 13) {
        event.preventDefault();
        return false;
      }
    });
  });

        </script>
Вернуться на верх