I'm making a web app to manage students. When creating/ updating students a "NoReverseMatch" error is thrown. I'm new to django but I cannot figure out why it's throwing the error when the exact same pattern name is present in the urls files. The delete redirect does not work either.
urls.py:
path('Student/', views.StudentListView.as_view(), name='Students'),
path('Student/<int:pk>', views.StudentDetailView.as_view(), name='Student-detail'),
path('Student/create/', views.StudentCreate.as_view(), name='Student_create'),
path('Student/<int:pk>/update/', views.StudentUpdate.as_view(), name='Student_update'),
path('Student/<int:pk>/delete/', views.StudentDelete.as_view(), name='Student_delete'),
views.py:
class StudentDetailView(generic.DetailView):
model = Student
class StudentListView(generic.ListView):
model = Student
template_name = 'main/student_list.html'
class StudentCreate(CreateView):
model = Student
fields = '__all__'
class StudentUpdate(UpdateView):
model = Student
fields = ['student_name']
class StudentDelete(DeleteView):
model = Student
success_url = reverse_lazy('Students')
student_form.html:
{%block content%}
<body>
Add new student:
<form action="" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Submit">
</form>
</body>
{%endblock%}
Instead of redirecting back to the student detail page I get the following error:
NoReverseMatch at /Student/1/update/
Reverse for 'Student-detail' not found. 'Student-detail' is not a valid view function or pattern name.
Thank you.