Отображение данных в модальной форме через django

Я совсем новичок в django. Я пытаюсь отобразить подробности записи студента в модальной форме после нажатия кнопки Подробности. Но она показывает пустую модальную форму. Ниже приведен фрагмент кода. Пожалуйста, дайте мне знать, если я делаю что-то неправильно. Заранее спасибо.

Вот мнения

def student(request):
    students = Student.objects.values("standard__standard_name", "studentid","firstname","lastname","status","nationality","Gender")
    return render(request, 'student.html', { 'students':students })

def student_detail(request, studentid):
    try:
        student_object = Student.objects.filter(studentid=studentid)
        student = student_object.values("studentid","firstname","lastname","standard__standard_name","status","nationality","dob","Gender","religion","parent__parentid")
        print(student)
    except student.DoesNotExist:
        raise Http404('student not found')
    return render(request, 'student_detail.html', {'student':student})

student.html фрагмент

     <div class="tab-pane fade show active" id="show-students-pane" role="tabpanel" aria-labelledby="show-students" tabindex="0">
        <table class="table table-striped table-bordered table-hover">
          <th>Name</th>
          <th>Standard</th>
          <th>Gender</th>
          <th>Status</th>
          <th>Nationality</th>
          {% for student in students %}
          <div class="studentname">
            <tr>
              <td>{{ student.firstname |capfirst }} {{ student.lastname |capfirst }}</td></a>
              <td>{{ student.standard__standard_name }}</td>
              <td>{{ student.Gender }} </td>
              <td>{{ student.status }} </td>
              <td>{{ student.nationality }} </td>
              <td><button type="button" class="modalbtn btn btn-primary" data-bs-toggle="modal" data-bs-target="#studentModal" onclick="localtion.href='/student/<studentid>/detail/ student.studentid'">Details</button></td>
            </tr>
          </div>
          {% endfor %}
        </table>
        <div class="modal" id="studentModal">
          <div class="modal-dialog">
            <div class="modal-content">

              <!-- Modal Header -->
              <div class="modal-header">
                <h4 class="modal-title" id="studentModal">{{ student.firstname }}</h4>
                <button type="button" class="btn-close" data-dismiss="modal" aria-label="Close">
                  <span aria-hidden="true">&times;</span>
                </button>
              </div>

              <!-- Modal body -->
              <div class="modal-body">

                {% include 'student_detail.html' %}
              </div>

              <!-- Modal footer -->
              <div class="modal-footer">
                <button type="button" class="btn btn-danger" data-bs-dismiss="modal">Close</button>
              </div>

            </div>
          </div>
        </div>
      </div>

student_detail.html


<table class="table table-striped table-bordered table-hover" >
  {% for s in student %}
  <tr>
      <th>Name</th>
      <td>{{ s.firstname |capfirst }} {{ s.lastname|capfirst }}</td>
  </tr>
  <tr>
      <th>FirstName</th>
      <td>{{ s.firstname }}</td>
  </tr>
  <tr>
      <th>LastName</th>
      <td>{{ s.lastname }}</td>
  </tr>
  <tr>
      <th>Standard</th>
      <td>{{ s.standard__standard_name }}</td>
  </tr>
  <tr>
      <th>DOB</th>
      <td>{{ s.dob }}</td>
  </tr>
  <tr>
      <th>Gender</th>
      <td>{{ s.Gender }}</td>
  </tr>
  <tr>
      <th>Nationality</th>
      <td>{{ s.nationality }}</td>
  </tr>
  <tr>
      <th>Religion</th>
      <td>{{ s.religion }}</td>
  </tr>
  <tr>
    <th>Parent</th>
    <td>
      {{ s.parent__parentid }}
    </td>
</tr>
  {% endfor %}
 
</table>

urls.py

    path('student/', views.student, name='student'),
    path('student/<studentid>/detail/', views.student_detail, name='student_detail'),

Кажется, я понял, в чем проблема. На странице с подробной информацией о студенте вы передаете только одного студента! Так почему же вы именно зацикливаете?????? Ваши теги должны выглядеть так:

{{student.first_name}}
{{student.last_name}}

Но это не так, потому что если вы перебираете в цикле obj студента, то получите ошибку. Дело в том, что вы перебираете студентов, даже не передавая их в шаблон!

У меня есть и другие предложения!

Ваш url для student_detail :

path('student/<int:studentid>/detail/', views.student_detail, name='student_detail')

Я просто добавил int перед studentid, я думаю, что это лучшая практика,

Другой совет - использовать теги django и тег a вместо js в кнопке "Подробности":

<a href="{% url 'student_detail' %}">Details</a>

В таких случаях я сам предпочитаю теги, а не кнопки

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