Reverse for 'list' with keyword arguments '{'pk': 2}' not found. 1 pattern(s) tried: ['article\\/(?P[0-9]+)$']
models.py
from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
from django.urls import reverse
class Article(models.Model):
title = models.CharField(max_length = 50)
author = models.ForeignKey(User, on_delete = models.CASCADE)
tag = models.ForeignKey(Tag, default = 0 ,on_delete = models.CASCADE)
text = models.TextField()
image = models.ImageField(upload_to='article/%Y/%m/%d', blank=True)
likes = models.ManyToManyField(settings.AUTH_USER_MODEL, blank = True, related_name = 'post_likes')
pub_date = models.DateTimeField()
def get_absolute_url(self):
return reverse('list', kwargs={'pk': self.pk})
def __str__(self):
return self.title
# Create your models here.
views.py
class PostLike(RedirectView):
def get_redirect_url(self, *args, **kwargs):
pk = self.kwargs.get('pk')
obj = get_object_or_404(Article, pk = pk)
url_ = obj.get_absolute_url()
user = self.request.user
if user.is_authenticated():
obj.likes.add(user)
return url_
urls.py
from django.urls import path
from django.contrib.auth import views as authViews
from . import views
from .views import PostLike
urlpatterns = [
path('', views.blog, name = 'blog'),
path('exit/', authViews.LogoutView.as_view(), name='exit'),
path('tag_list/<int:tags_id>', views.list_article_tag ,name = 'list_article_tag'),
path('article/<int:articles_id>', views.list, name = 'list'),
path('article/<int:articles_id>/leave_comment', views.leave_comment, name = 'leave_comment'),
path('new_article/', views.new_article, name = 'new_article'),
path('list_user/', views.list_user, name = 'list_user'),
path('edit_article/<int:id>', views.edit_article, name = 'edit_article'),
path('article/<int:pk>/likes', PostLike.as_view(), name = 'like')
]