Генерация данных при нажатии на кнопку/ссылку Django

Я очень новичок в Django и веб-приложениях. У меня есть HTML страница, которая позволяет пользователям искать имена игроков в базе данных. В ответ выдается HTML-таблица. Каждая запись - это показатели игрока по отношению к игре, в которой он играл. Каждая игра имеет 10 игроков, связанных с ней

search_db.html

<h1>Search Results for: {{searched}}</h1>
        <table>
            {% for player in match %}
            <tr> 
                <td>
                  <a href=search_player_db/{{player.match_id}}>{{player.match_id}}</a> 
                  </td>
                
                <td>{{ player.name}}</td>
                <td>{{ player.role}}</td>
                <td>{{ player.win_or_loss}}</td>
            </tr>
            {% endfor %}
        </table> 
    {{IM TRYING TO GENERATE DATA HERE}}

Идентификатор матча - это ссылка, которая ведет пользователя на страницу с дополнительной информацией, связанной с матчем match_details.html

{%block stats%}
<body>
    <h1>Winning team</h1>
        {%for player in winners %}
        <li>
            {{player.name}}
            {{player.role}}
            </li>
        {%endfor%}
    <h1>Losing team</h1>
        {%for player in losers %}
        <li>
            {{player.name}}
            {{player.role}}
            </li>
    {%endfor%}
 </body>
{%endblock%}

Вместо перенаправления на новую страницу при нажатии на ссылку, я хотел бы загрузить содержимое из match_details.html в страницу под таблицей на search_db.html через кнопку/ссылку в search_db.html. Таким образом, пользователь может кликать по результатам поиска

views.py


    def search_playerdb(request):
        if request.method == "POST":
            searched = request.POST['searched']
            players = PlayerInfo.objects.filter(player_name__contains=searched)
        context={
            'searched': searched, 
            'players': players}
            return render(request, 'searchdb.html', context)

        else:
            return render(request, 'searchdb.html', {})

    def display_match(request, matchid):
        match = PlayerInfo.objects.filter(match_id=matchid)
        winners = match.filter(win_or_loss=True)
        losers = match.filter(win_or_loss=False)
        context = {
            'match': match,
            'winners': winners,
            'losers': losers,}
        return render(request, 'match_details.html', context)

Для этого вам потребуется использовать Javascript для выполнения вызова AJAX. Если вы не знаете, AJAX-вызов позволяет веб-странице отправлять или получать данные без необходимости обновлять страницу.

Это можно сделать, используя чистый javascript - Пример https://www.w3schools.com/xml/ajax_intro.asp

Или вы можете использовать библиотеку, чтобы абстрагироваться от некоторых сложностей. Примером может служить JQuery https://www.w3schools.com/jquery/ajax_ajax.asp

В любом случае, вы будете вызывать новый URL на вашем сайте.

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