NoReverseMatch в /sessions/exercise/6/update/
Я схожу с ума.
Согласно отладчику Django, нет обратного соответствия для запрашиваемого шаблона, но он идентичен пути URL в urls.py, и я передаю id объекта в качестве обязательного аргумента.
NoReverseMatch at /sessions/exercise/4/update/
Не найден ответ для 'exercise_update' без аргументов. 1 шаблон(ы) проверен(ы): ['sessions/exercise/(?P[0-9]+)/update/$']
.Ошибка при отрисовке шаблона
Это мой html
<button><a href="{% url 'sessions:exercise_update' exercise.id %}">Update exercise</a></button>
Это мой путь URL
path('exercise/<int:pk>/update/', MyExerciseUpdate.as_view(), name='exercise_update'),
Представление является просто общим представлением обновления.
class MyExerciseUpdate(LoginRequiredMixin, UpdateView):
model = Exercise
fields = ['my_fields']
Я попробовал отобразить exercise.id
, чтобы проверить, существует ли он, и он существует. Почему нет аргумента?
Кроме того, я использую этот путь для детального представления на другой странице, и он работает просто отлично
<a href="{% url 'sessions:exercise_detail' exercise.id %}">{{ exercise.name }}</a>
Помогите, пожалуйста.
Проблема была в html-файле формы form. В url формы отсутствовал аргумент exercise.id, поэтому она выдавала ошибку отсутствия аргумента:
<form action="{% url 'sessions:exercise_update' %}" method="post">
Решение:
<form action="{% url 'sessions:exercise_update' exercise.id %}" method="post">
Сейчас это кажется очень глупым, но мне потребовалась целая вечность, чтобы понять, в чем проблема.