Вернуться к публикации / / после удаления комментария - PullRequest
0 голосов
/ 06 мая 2020

Я могу удалить комментарий 52 (см. Скриншот ниже). Моя трудность заключается в том, чтобы вернуть пользователя на страницу localhost: 8000 / post / 8 /. В настоящее время я использую return render(request, 'blog/home.html') как временное решение, пока ищу ответ на свою проблему. Я включил свой код для views.py, у меня есть ha sh (#) перед большинством строк кода. Это представляет мои многочисленные неудачные попытки.

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'),

models.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_detail на post-detail.

enter image description here

1 Ответ

1 голос
/ 06 мая 2020

Первый импорт:

from django.shortcuts import redirect

затем добавьте это как оператор возврата:

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

comment.post.id получит фактический идентификатор объекта Post, относящегося к удаляемому комментарию.

...