Я работаю над проектом в приложении django, где пользователю может понравиться или не понравиться сообщение.Кнопки «Нравится» и «Не нравится» работают нормально, также значение сохраняется в базе данных.Но когда нажимается кнопка «Мне нравится», она показывает эту ошибку:
NoReverseMatch at /gallery/likes/ Reverse for 'detail' with keyword arguments '{'pk': 9}' not found. 1 pattern(s) tried:
['gallery\\/(?P<album_id>[^/]+)$']
, но я не хочу эту ошибку.
model.py
class Album(models.Model):
caption = models.TextField()
photo = models.FileField()
uploader=models.ForeignKey(User,on_delete=models.CASCADE,default=None)
likes = models.ManyToManyField(User, related_name='likes',blank=True)
def __str__(self):
return self.caption
def get_absolute_url(self):
return reverse('gallery:detail', kwargs={"pk": self.pk})
url.py
app_name = 'gallery'
urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
path('<album_id>',views.detail, name='detail'),
path('likes/',views.like_post, name='like_post'),
path('album<pk>/delete',views.AlbumDelete.as_view(), name='album-delete'),
]
views.py
def detail(request,album_id):
album = get_object_or_404(Album, pk=album_id)
is_liked = False
if album.likes.filter(id=request.user.id).exists():
is_liked = True
context = {
'album' : album,
'is_liked' : is_liked,
}
return render(request, 'gallery/detail.html', context)
def like_post(request):
album = get_object_or_404(Album, id=request.POST.get('album_id'))
is_liked = False
if album.likes.filter(id=request.user.id).exists():
album.likes.remove(request.user)
is_liked = False
else:
album.likes.add(request.user)
is_liked = True
return HttpResponseRedirect(album.get_absolute_url())
detail.html
{% extends 'gallery/base.html' %}
<title>{% block title%}User Photos{% endblock %}</title>
{% block body%}
<div class="center">
<img src="{{ album.photo.url }}" height="442" width="512">
<h3>{{ album.caption }}</h3>
{% if request.user == album.uploader %}
<form action="{% url 'gallery:album-delete' album.id %}" method="post" >
{% csrf_token %}
<input type="hidden" name="album_id" value="{{ album.id }}" />
<button type="submit" class="deleteB">delete
<span class="glyphicon glyphicon-trash"></span>
</button>
</form>
{% endif %}
<!--like option adding-->
<form action="{% url 'gallery:like_post' %}" method="post" >
{% csrf_token %}
{% if is_liked %}
<button type="submit" name="album_id" value="{{album.id}}" class="btn btn-danger">DisLike</button>
{% else %}
<button type="submit" name="album_id" value="{{album.id}}" class="btn btn-primary">Like</button>
{% endif %}
</form>
</div>
{% endblock %}
Я новичок в django, поэтому не могу понять, чтоОсновная ошибка здесь.Я думаю, что url.py должен быть обновлен.Версия Джанго 2.1.3