0

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.

Egor. L
  • 169
  • 1
  • 4
  • 15

0 Answers0