Как перейти на новую ссылку из результатов поисковой строки в шаблоне Django с помощью ajax?

Я создаю приложение для чата на Django. Я использую ajax, чтобы результаты поиска появлялись после ввода каждого символа в поле ввода. Это работает нормально. Но теперь я пытаюсь добавить ссылку на результаты поиска (которые являются просто именем), чтобы при нажатии на один из результатов поиска он переходил по этой ссылке и вызывался views.chat_from_search, где я обрабатываю всю логику создания чата и рендеринга страницы. Я попытался добавить слушателя событий и затем перенаправить на новую ссылку (код, которым я пытался добавить ссылку, находится внутри тегов ** **), но это приводит к этой ошибке Не найден реверс для 'chatSearch' с аргументами '('',)'. 1 pattern(s) tried: ['chat/search/(?P<chat_user_name>[^/]+)/\Z']. Мой код для ajax поиска и где я создаю div, который содержит результаты поиска (и моя неудачная попытка добавить ссылку) находится внутри sendSearchData (который находится ниже). ajax возвращает массив объектов, который имеет только атрибут имени пользователя. Вот структура объектов (я создаю их и добавляю в список, который возвращаю)

indiv_user = {
                    'name': user.username,
                }



const sendSearchData = (contact_name) => {
  $.ajax({
    type: 'POST',
    url: '/search/',
    data:{
      'csrfmiddlewaretoken': csrf,
      'contact_name': contact_name,
    },
    success: (res) =>{
      const data = res.data;
      document.getElementById('search_result_box').innerHTML = ""
      if (Array.isArray(data)){

        data.forEach(contact => {
          document.getElementById('search_result_box').innerHTML  +=
            " <div id ='"+contact.name+"'class='search-person'><h5 class='search-name'>"+contact.name+"</h5></div>";

          **document.getElementById(contact.name).addEventListener('click',function(){
            location.href= "{% url 'chatPage:chatSearch' contact.name %}"
          });**
        });

      }
    },
    error: (err)=>{
      console.log(err)
    }
  })
}

Мой urls.py имеет вид

from django.urls import path
from chatPage import views
app_name = "chatPage"
urlpatterns = [
    path('', views.homepage, name='homepage'),
    path('chat/<int:chatID>/', views.home, name='chat'),
    path('chat/search/<str:chat_user_name>/', views.chat_from_search, name='chatSearch'), #noqa
    path('search/', views.search_result, name='search')
]

Может ли кто-нибудь сказать мне, почему это не работает? Также, как я могу добавить ссылку внутри div после получения результата от ajax? Я пытаюсь разобраться в этом уже 1,5 дня, и любая помощь будет оценена по достоинству. Большое спасибо.

Язык форматирования шаблона (например, части {{ code }} и {% code %}) оценивается до того, как Djano впервые доставит страницу. Он не может оценить их после того, как страница была доставлена в браузер, поэтому он не может взять результаты ajax и отформатировать их. Ошибка, которую вы получаете, связана с тем, что он пытается выполнить оценку еще до того, как пользователь получил страницу, и поэтому у него нет contact.name для использования.

Вам придется построить URL по-другому, используя только данные ajax и javascript. К счастью, в данном случае построение URL кажется простым, и у вас уже есть необходимая переменная, поэтому вы можете использовать что-то вроде

location.href= "/chat/search/" + contact.name

Другой вариант - обновить запрос сообщения, чтобы включить URL поиска чата как часть ответа, например,

 contact { "name": user.name,
           "url" : reverse('chatsearch', kwargs={"chat_user_name": user.username]
         }

Тогда вы можете просто сослаться на

location.href= contact.url
Вернуться на верх