无法在我的Django博客上添加评论

时间:2020-06-10 15:57:28

标签: python django django-models django-forms django-views

我一直试图在我的网站的论坛上添加评论,并且设法达到了查看评论表单的阶段。但是,当您实际提交评论表格时,出现以下错误。

仅供参考,“ 2020年有哪些良好的营销活动?”是我也想添加评论的帖子的名称。

enter image description here

以下是使用的模型:

class Comment(models.Model):
    post = models.ForeignKey(Post, related_name='comments')
    user_name = models.CharField(max_length=250)
    email = models.EmailField()
    content = models.TextField()
    created_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.user_name

class Post(models.Model):
    creator_id = models.ForeignKey(User, null=False, default=1)
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_date = models.DateTimeField(auto_now_add=True)
    published_date = models.DateTimeField(blank=True, null=True, default=timezone.now)
    views = models.IntegerField(default=0)
    category = models.CharField(choices=CATEGORY_CHOICES, max_length=30, blank=True, null=True)
    image = models.ImageField(upload_to="img", blank=True, null=True)

    def __str__(self):
        return self.title

以下是使用的视图:

def comment_post_form(request, pk):
    """ Create a view that allows us to add a comment """

    post = get_object_or_404(Post, pk=pk)
    if request.method == "POST":
        form = CommentPostForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.save()
            return redirect('forum_post_details.html', {'post': post})
    else:
        form = CommentPostForm()
        return render(request, 'comment_post_form.html', {'form': form})

以下是使用的表格:

class CommentPostForm(forms.ModelForm):

    class Meta:
        model = Comment
        fields = ['content']

以下是模板中使用的“ for”语句:

{% for comment in comments %}
            <p>{{ comment.created_date }}</p>
            <p>{{ comment.user_name }}</p>
            <p>{{ comment.content }}</p>
            {% empty %}
            <p>No comments added. Why not be the first!</p>
            {% endfor %}

我们非常感谢您的帮助,如果您需要其他任何帮助,请告诉我:)

1 个答案:

答案 0 :(得分:0)

重定向的方式不是您的操作方式。您可以通过多种方式使用redirect()函数。

url.py

path('teacherprofile/', views.teacher_profile_view, name='teacher-profile'),

views.py

通过传递视图名称

return redirect('teacher-profile')

通过传递硬编码URL重定向到:

return redirect(teacherprofile/)

这也适用于完整的URL:

 return redirect('https://example.com/')

通过这种方式,用户可以重定向html页面本身。