python - 创建新帖子后如何将用户重定向到新创建的帖子
问题描述
我希望用户被重定向到我尝试添加的新创建的帖子
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'
解决方案
您的get_absolute_url
方法不正确,相反,您可以使用dict或list提供kwargs
参数。在您的情况下,您应该使用我在上面评论中提到的列表来执行此操作。args
def get_absolute_url(self):
return reverse("article-detail", args=[self.pk])
推荐阅读
- javascript - 错误:对象作为 React 子级无效(在 Promise.all 中)
- c# - 使用 SQL 客户端将时间触发的 Azure 函数与数据库连接
- javascript - 如何在开头匹配 0 或 + 后跟 1 到 3 位数字,但不能同时匹配两者?
- json - 如何将图像和一些文本发送到服务器(Flask)
- r - 全局变量和函数行为
- android - Android MVVM:一个片段可以使用两个 ViewModel 吗?
- gitlab - 在 gitlab 管道中的作业完成后向组发送通知电子邮件以及指向工件的链接
- python - 无法将输入数组从形状 (30) 广播到形状 (31)
- php - 对 wp-admin/admin-ajax.php 的请求返回 404 错误
- javascript - 无效的挂钩调用。Hooks 只能在函数体内部调用 component-formik