Reverse for 'blog_detail' with no arguments not found. 1 pattern(s) tried: ['blog/(?P<pk>[0-9]+)$']

匆匆过客 提交于 2020-12-15 07:29:54

问题


Reverse for 'blog_detail' with no arguments not found.

Reverse for 'blog_detail' with no arguments not found. 1 pattern(s) tried: ['blog/(?P[0-9]+)$']

models.py

class Blog(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=80)
    slug = models.SlugField(max_length=80, unique=True, db_index=True, blank=True, null=True)
    description = models.TextField(max_length=1080, blank=True, null=True)
    image = models.ImageField(upload_to='blog/')
    tags = models.CharField(max_length=30, blank=True, null=True)
    category2 = models.CharField(max_length=50, blank=True, null=True)
    category = models.ManyToManyField("BlogCategory")
    created_on = models.DateTimeField(default=timezone.now())
    is_active = models.BooleanField(default=True)

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("blog_detail", kwargs={"pk": self.pk})

views.py

class BlogDetail(DetailView):
    model = Blog
    queryset =  Blog.objects.all()
    template_name = "testapp/blogd.html"

urls.py


from django.urls import path
from .views import (BlogList, BlogDetail)

urlpatterns = [

    path('blog/l', BlogList.as_view(), name='blog_list'),
    path('blog/<int:pk>', BlogDetail.as_view(), name='blog_detail'),
]



回答1:


you must args keyword for passing arguments in get_absolute_url method:

def get_absolute_url(self):
    return reverse("blog_detail", args=[str(self.pk)])


来源:https://stackoverflow.com/questions/59938995/reverse-for-blog-detail-with-no-arguments-not-found-1-patterns-tried-blo

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!