首页 > 解决方案 > 创建新帖子后如何将用户重定向到新创建的帖子

问题描述

我希望用户被重定向到我尝试添加的新创建的帖子

return reverse("article-detail", args=(str(self.pk)))但它不起作用。在命令提示符下它说`

django.urls.exceptions.NoReverseMatch:找不到带有参数“('4','3')'的'article-detail'的反向。尝试了 1 种模式:['article/(?P[0-9]+)$']

`

模型.py

Class Post(models.Model):
    title = models.CharField(max_length=255)
    header_image = models.ImageField(null=True, blank=True, upload_to='images/')
    title_tag = models.CharField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    body = RichTextField(blank=True, null=True)
    # body = models.TextField()
    post_date = models.DateTimeField(auto_now_add=True)
    category = models.CharField(max_length=255, default='coding')
    snippet = models.CharField(max_length=255)
    likes = models.ManyToManyField(User, related_name='blog_post')

    def total_likes(self):
        return self.likes.count

    def __str__(self):
        return self.title + ' | ' + str(self.author)

    def get_absolute_url(self):
        return reverse("article-detail", args=(str(self.pk)))
        # return reverse("home")

网址.py

path('add_post/', AddPostView.as_view(), name="add_post"),
path('article/<int:pk>', ArticleDetailView.as_view(), name="article-detail"),

视图.py

class AddPostView(CreateView):
    model = Post
    form_class = PostForm
    template_name = 'add_post.html'

标签: pythondjangodjango-modelsdjango-views

解决方案


您的get_absolute_url方法不正确,相反,您可以使用dictlist提供kwargs参数。在您的情况下,您应该使用我在上面评论中提到的列表来执行此操作。args

def get_absolute_url(self):
    return reverse("article-detail", args=[self.pk])

推荐阅读