我可以删除评论52(见下面的截图)。我的难点是让用户回到localhost:8000post8的页面。我目前使用的是 return render(request, 'blog/home.html')
作为临时解决方案,同时我也在想办法解决我的问题。我已经包含了我的views.py的代码,我在大部分代码行前面有一个哈希值(#)。这代表了我多次失败的尝试。
views.py
def delete_own_comment(request, pk):
#template_name = 'post_detail.html'
comment = get_object_or_404(Comment, id=pk)
#comments = Comment.objects.filter(post=post.id ,active=True)
#comment_form=CommentForm()
#post = Post.objects.filter(id=8).first()
comment.delete()
return render(request, 'blog/home.html')
#return HttpResponseRedirect(reverse('post_detail', kwargs={'pk_slug':comment.post}))
#return redirect('post_detail', pk=comment.post.id)
#return render(request, template_name, {'comment_form': comment_form})
#'comments': comments,
urls.py
path('post/<slug:pk_slug>/', views.post_detail, name='post-detail'),
模型.py
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now())
author = models.ForeignKey(User, on_delete=models.CASCADE)
url = models.SlugField(max_length=500, blank=True)
def save(self, *args, **kwargs):
self.url= slugify(self.title)
super().save(*args, **kwargs)
def __str__(self):
return self.title
def get_absolute_url(self):
#return reverse('article_detail', kwargs={'slug': self.slug})
return reverse('post-detail', kwargs={'pk_slug': self.slug})
class Comment(models.Model):
#The foriegn key is linked to the ID field in the Post model
#id = models.IntegerField(primary_key=True, blank=False)
post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
name = models.CharField(max_length=80)
email = models.EmailField()
body = models.TextField()
created_on= models.DateTimeField(default = timezone.now())
active = models.BooleanField(default=True)
url= models.SlugField(max_length=500, blank=True)
#id = models.AutoField(primary_key=True)
class Meta:
ordering = ['created_on']
def __str__(self):
return 'Comment {} by {}'.format(self.body, self.name)
def save(self, *args, **kwargs):
self.url= slugify(self.post)
super().save(*args, **kwargs)
def get_absolute_url(self):
return reverse('article_detail', kwargs={'slug': self.slug})
更新
我试过了 return reverse('post_detail', kwargs={'pk_slug':comment.post.id})
并出现以下错误。
更新2
我把它从 post_detail
到 post-detail
.
首先导入。
from django.shortcuts import redirect
然后添加这个作为返回语句。
return redirect('post-detail', comment.post.id)
comment.post.id
将得到与被删除的评论相关的Post对象的实际id。