Я указал URL-адрес для перечисления студентов и URL-адрес для отображения сведений об ученике, однако URL-адрес для сведений об ученике не работает.
ursl.py выглядит так:
urlpatterns = [
path('', views.SchoolListView.as_view(), name='list'),
path('<int:pk>/',views.SchoolDetailView.as_view(),name='detail'),
path('create/', views.SchoolCreateView.as_view(),name='create'),
path('update/<int:pk>/',views.SchoolUpdateView.as_view(),name='update'),
path('delete/<int:pk>/',views.SchoolDeleteView.as_view(),name='delete'),
path('students', views.StudentListView.as_view(), name='student_list'),
path('students/<int:pk>/',views.StudentDetailView.as_view(),name='student_details'),
]
но когда я щелкаю по фактическому ученику, он не приводит меня к basic_app / Students / 1 (например), а к basic_app / 1
Также, когда я вручную набираю / basic_app / Students / 1, я получаю сообщение об ошибке:
NoReverseMatch at /basic_app/students/1/
Reverse for 'update' with keyword arguments '{'pk': ''}' not found. 1
pattern(s) tried: ['basic_app/update/(?P<pk>[0-9]+)/$']
нет обратной ошибки
мои взгляды:
class StudentListView(ListView):
context_object_name = 'students'
model = models.Student
class StudentDetailView(DetailView):
context_object_name = 'student_details'
model = models.Student
template_name = 'basic_app/student_detail.html'
модель:
class Student(models.Model):
name = models.CharField(max_length=150)
age = models.PositiveIntegerField()
school = models.ForeignKey(School, related_name='students', on_delete=models.CASCADE)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("basic_app:student_details",kwargs={'pk':self.pk})
Шаблон student_details.html:
{% extends 'basic_app/basic_app_base.html' %}
{% block body_block %}
<div class="container jumbotron">
<h2>Student Details:</h2>
<p>Name: {{student_details.name}}</p>
<p>Principal: {{student_details.age}}</p>
<p>Location: {{student_details.school}}</p>
<!-- <div class="container">
<a class="btn btn-primary" href="{% url 'basic_app:update' pk=school_details.pk %}">Update</a>
<a class="btn btn-danger" href="{% url 'basic_app:delete' pk=school_details.pk %}">Delete</a>
<a href="{% url 'basic_app:list' %}">Cancel</a>
</div> -->
{% endblock %}
Что я сделал не так? `