Как включить переменную JavaScript в URL Django в шаблоне?

Я хочу включить переменную mangaid в "{% url 'manga' mangaid %}". Ни ${mangaid}, ни mangaid не работают. Как я могу это сделать?

   let input = document.querySelector("#search")
    input.addEventListener("keyup", () => {
      document.querySelector("#results").innerHTML = "";
      let value = (input.value)
      fetch(`searchresponse/${value}`).then((response) => response.json()).then((results) => {
        results.forEach(function (result) {
          let mangaid = (result["id"])
          document.querySelector("#results").insertAdjacentHTML('beforeend', `<a class="result" id="result${mangaid}">${result["title"]}</a>`);
          document.getElementById("result"+mangaid).addEventListener("click", (event) => {
            event.target.href = "{% url 'manga' mangaid %}"
          })
        })
      })
    })

Вы можете сделать это, используя get params, например, http://localhost:8000/manga/?a=1.
В представлении вы можете получить доступ к параметрам get через request.GET.get('a'), в этом случае код вернет 1 из a=1 в url.

В JS с помощью djangos url templatetag вы можете сделать fetch("{% url 'manga' %}/mangaid=" mangaid)....
Django заменит {% url 'manga' %} на url с именем manga.
mangaid должна быть js переменной.

Ваша головка просмотра должна выглядеть примерно так:

def mangaView(request):
    mangaid = request.Get.get('mangaid')
    print(mangaid)

РЕДАКТ: Урл должен иметь конец / для предотвращения перенаправления (301), это снижает нагрузку на сервер (важно для prod) http://localhost:8000/abc/?a=1.

Вернуться на верх