一旦评论被删除,返回帖子<slug:pk_slug>。

问题描述 投票:0回答:1

我可以删除评论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})

enter image description here

更新

我试过了 return reverse('post_detail', kwargs={'pk_slug':comment.post.id}) 并出现以下错误。

enter image description here

更新2

我把它从 post_detailpost-detail.

enter image description here

python django python-3.x django-views
1个回答
1
投票

首先导入。

from django.shortcuts import redirect

然后添加这个作为返回语句。

return redirect('post-detail', comment.post.id)

comment.post.id 将得到与被删除的评论相关的Post对象的实际id。

© www.soinside.com 2019 - 2024. All rights reserved.