Create a generic class view to display a list of students and a detail view that displays student details for any selected student
Program:-
views.py:-
from django.views import generic
from .models import Student
class StudentListView(generic.ListView):
model = Student
template_name = "student_list.html"
context_object_name = "student_list"
class StudentDetailView(generic.DetailView):
model = Student
template_name = "student_detail.html"templates/student_list.html:-
<html>
<body>
{% if student_list %}
<table border>
<tr>
<th>USN</th>
<th>Courses Enrolled</th>
</tr>
{% for student in student_list %}
<tr>
<td><a href="{% url 'student_detail' pk=student.pk %}">{{ student.student_usn }}</a></td>
<td>
{% for course in student.enrolment.all %}
<span>{{ course.course_name }}</span>
{% endfor %}
</td>
</tr>
{% endfor %}
</table>
{% else %}
<h1>No Students Enrolled</h1>
{% endif %}
</body>
</html>templates/student_detail.html:-
<h1>Student Name: {{ student.student_name }}</h1>
<h1>Student USN: {{ student.student_usn }}</h1>
<h1>Student Sem: {{ student.student_sem }}</h1>urls.py:-
from django.contrib import admin
from django.urls import path, re_path
from ap3.views import StudentListView, StudentDetailView
admin.site.site_header = "My Site Header"
admin.site.site_title = "My Site Title"
admin.site.index_title = "My Site Index"
urlpatterns = [
path('student_list/', StudentListView.as_view(), name='student_list'),
path('student_detail/<int:pk>/', StudentDetailView.as_view(), name='student_detail'),
]
