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">

Сейчас это кажется очень глупым, но мне потребовалась целая вечность, чтобы понять, в чем проблема.

Вернуться на верх