doesNotExist at /blog/postComment 帖子匹配查询不存在

我正在尝试打印博客下方的评论,但单击提交按钮后出现上述错误。我只想在网页顶部显示一条成功消息,为此我编写了以下行:messages.success(request, 'your comment has been added'),但出现错误!


models.py:


from django.db import models

from django.contrib.auth.models import User

from django.utils.timezone import now

# Create your models here.



class Post(models.Model):

    sno = models.AutoField(primary_key=True)

    title = models.CharField(max_length=50)

    content = models.TextField()

    author = models.CharField(max_length=50)

    slug = models.SlugField(max_length=200)

    timeStamp = models.DateTimeField(blank=True)


    def __str__(self):

        return self.title + " by " + self.author



class BlogComment(models.Model):

    sno = models.AutoField(primary_key=True)

    comment = models.TextField()

    user = models.ForeignKey(User, on_delete=models.CASCADE)

    post = models.ForeignKey(Post, on_delete=models.CASCADE)

    parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True)

    timestamp = models.DateTimeField(default=now)


urls.py:


from django.urls import path, include

from blog import views


urlpatterns = [

    path('postComment', views.postComment, name='postComment'),

    path('', views.blogHome, name='home'),

    path('<str:slug>', views.blogPost, name='blogpost'),

]


view.py:


from django.shortcuts import render, HttpResponse, redirect

from blog.models import Post, BlogComment



def blogHome(request):

    allpost = Post.objects.all()

    context = {'allposts': allpost}

    return render(request, 'blog/blogHome.html', context)



def blogPost(request, slug):

    post = Post.objects.filter(slug=slug).first()

    comments = BlogComment.objects.filter(post=post)

    context = {'post': post, 'comments': comments}

    return render(request, 'blog/blogPost.html', context)


犯罪嫌疑人X
浏览 163回答 3
3回答

慕田峪9158850

你的错误在模板中。name您的输入之一设置错误:在你的代码中:<input&nbsp;type="hidden"&nbsp;name&nbsp;=&nbsp;"comment"&nbsp;value&nbsp;=&nbsp;"{{post.sno}}">正确版本:<input&nbsp;type="hidden"&nbsp;name&nbsp;=&nbsp;"postSno"&nbsp;value&nbsp;=&nbsp;"{{post.sno}}">

FFIVE

将注释更改为注释,因为“注释”未定义。您正在使用评论。

凤凰求蛊

为了解决您的第一个问题,您应该将该行post = Post.objects.get(sno=postSno)(在postComment函数中)更改为:from django.http import Http404try:&nbsp; &nbsp; post = Post.objects.get(sno=postSno)except Post.DoesNotExist:&nbsp; &nbsp; return Http404("Post does not exist") # or return HttpResponse("Post does not exist")因为在某些情况下该查询可能无法返回任何结果,因此会引发DoesNotExistError。第二个问题(我的意思是NameError at /blog/postComment name 'comments' is not defined)来自相同的函数...更改此行将comment = BlogComment(comment=comments, user=user, post=post)解决comment = BlogComment(comment=comment or '', user=user, post=post)此问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python