Получение данных из базы данных в Modal в Django

этот файл serivces.html содержит код, используемый для генерации элементов карточки с id, отличными от iddb

{% block content%}
<div class="container-fluid p-lg-5  d-flex justify-content-lg-around   flex-wrap ">
  {% for package in packages %}
  <div class="card" style="width: 18rem; ">
    <div>

      <img class="cardimg" src="{% static '/images/genomic lab final logo1 ( RGB ).png'%}" class="card-img-top" alt="...">
    </div>
    <div class="card-body">
      <h3 class="text-center">{{package.package_name}}  <span class="checkup text-center">Checkup</span></h3>

      <button type="button" class="modalbtn btn btn-primary" data-bs-toggle="modal" data-bs-target="#cardModal">
        more details
       </button>
    </div>
  </div>

 

  
  {% endfor%}
</div>


<<!-- Modal -->
<div class="modal fade content-data" id="cardModal"  data-url="{%url 'Services_data'%}"  tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">{{details.pkg_name}}</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <H4>{{details.content}}</H4>

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>
{% endblock %}

это view.py содержать


def services(request):

    packages = Packages.objects.all()
    context = {'packages':packages}

    return render(request, 'base/Services.html',context)

class AjaxHandlerView(View):
    def get(self,request,*args, **kwargs):
        if request.is_ajax():
            details = Details.object.all()
            details_serializers = serializers.serializer('json',details)
            return JsonResponse(details_serializers,safe=False)
        return JsonResponse({'message':'Errrorr'})

а это base.js содержит код ajax

$(document).ready(function(){
    $(".modalbtn").on('click',function(){
      $.ajax({
        url: "{% url 'Services_data' %}",
        type:'GET',
        datatype: 'json',
        success: function(){
          $('#cardModal').modal("show");

        },
        error:function()
          {console.log('Errorrrr');
        }
        
        });
  
      });

   
      });

По сути, этот код генерирует карточки с разными id и при нажатии на кнопку подробнее внутри определенной карточки должно быть показано модальное "всплывающее окно", содержащее подробную информацию о карточке

но у меня ничего нет внутри всплывающего окна есть предложения ??

Причина, по которой ничего не появляется, заключается в том, что ваш AJAX запрос не изменяет вашу модальную секцию, а модальная секция не содержит никакой информации, потому что объект details предоставляется вашим представлением, связанным с AJAX, а не представлением служб, которое его создает.

Я бы предложил несколько исправлений:

  1. Заставьте ваш код javascript обновлять модальный HTML, например, так:
   success: function(data) {
       $('#cardModal').HTML();
       $('#cardModal').modal("show");
    }
  1. Переместите внутренний HTML модала в отдельный файл шаблона под названием 'detail-modal.html' (или что-то подобное), но сохраните основной контейнер #cardModal в существующем шаблоне.

  2. Вместо использования сериализатора и JSON в представлении класса AJAX, используйте представление функции, которое отображает новый модальный шаблон, контекстом которого является выбранный вами объект detail

    .

Наконец, в вашем соглашении об именовании есть множественное число Details объектов, вы должны назвать его как единственное число Detail. Также, похоже, нет связи между Package и Details, предположительно, вы хотите установить какие-то отношения - это бы вам очень помогло.

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