Использование схемы django url с Javascript fetch API

Я хочу использовать схему django url при работе с fetch API, но она не понимается, и в итоге я получаю URL в приведенном виде.

Я следовал этому руководству (извините, на французском), в котором автор добился этого очень легко. Продемонстрировано здесь

Код примера :

   let url = "{% url 'myapp:search_user' %}"
   const request = new Request(url, {method: 'POST', body: formData});
   fetch(request)
      .then(response => response.json())
      .then(result => {
         console.log(result)
      })

Что заканчивается консольной ошибкой :

POST http://127.0.0.1:8000/myapp/actions/%7B%%20url%20'myapp:search_user'%20%%7D 404 (Not found)

Конечно, мой URL объявлен в url.py и хорошо работает при использовании в шаблонах.

Если я заменю "url" на относительный путь, это будет работать хорошо, но это не дружелюбно к django.

Что я упускаю?

Если вы хотите получить доступ к переменной Django во внешнем Js файле

Объявите переменную в теге js скрипта. <script> let url = "{% url 'app_label:my_url' %}";</srcipt>

Вставьте ваш внешний js файл, в котором у вас теперь есть доступ к определенной переменной url

external_js.js

let django_url = url;

У меня была такая же проблема при работе с ajax, и я просто использовал прямой url, как он отображается в строке поиска. Вместо {% url 'myapp:search_user' %} попробуйте "mymapp/search_bar" или как это выглядит в вашем файле urls.py.

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