URL-адрес NoReverseMatch с использованием Django
В настоящее время получаю ошибку NoReverseMatch и не уверен, почему. Вот сообщение об ошибке и соответствующий код:
Ошибка: Ошибка при рендеринге шаблона В шаблоне C:....<Folder><Project>\userapp\templates\userapp\details.html, ошибка в строке 11
Отзыв для 'favorite' с аргументами '('',)' не найден. 1 шаблон(ы): ['music/(?P<album_id>[0-9]+)/favourite\Z']
urls.py
app_name = 'userapp'
path('music/<int:album_id>/favourite/', views.favourite, name='favourite')
views.py
def favourite(request, album_id):
albums = get_object_or_404(Album, pk=album_id)
try:
selected_song = albums.song_set.get(pk=request.POST['song'])
except (KeyError, Song.DoesNotExist):
return render(request, 'userapp/details.html', {
'albums': albums,
'error_message': "You did not select a valid song",
})
else:
selected_song.is_favourite = True
selected_song.save()
return render(request, 'userapp/details.html', {'albums': albums})
details.html
{% if error_message %}
<p><strong>{{ error_message }}</strong></p>
{% endif %}
строка 11 - <form action ="{% url 'userapp:favourite' album.id %}" method="post">
{% csrf_token %}
{% for song in albums.song_set.all %}
<input type="radio" id="song{{ forloop.counter }}" name="song" value="{{ song.id }}">
<label for="song{{ forloop.counter }}">
{{ song.song_title }}
{% if song.is_favourite %}
<img src="https://i.imgur.com/b9b13Rd.png"/>
{% endif %}
</label><br>
{% endfor %}
<input type="submit" value="Favourite">
</form>
Ваша контекстная переменная названа albums
, а не album
.
Так вы измените переменную в html:
<form action ="{% url 'userapp:favourite' albums.id %}" method="post">
Или переименуйте везде albums
в album
, потому что это не сборник альбомов, это просто один альбом.