【发布时间】:2020-06-07 14:37:50
【问题描述】:
更新:我更改了views.py 中的一些代码。
基本源文件are here 我正在尝试包含评论和回复系统
views.py 代码如下:
from .models import Post,Comment
from .forms import CommentForm
from django.shortcuts import redirect,render, get_object_or_404
from django.views.generic import ListView,DetailView
from django.views.generic.edit import FormMixin
from django.http import HttpResponseRedirect
from django.urls import reverse_lazy
from django.views.generic.base import RedirectView
class PostList(ListView):
model=Post
template_name='home.html'
context_object_name='post_list'
queryset=Post.objects.all()
class PostDetail(DetailView):
model=Post
template_name='post_detail.html'
def get_success_url(self):
return reverse_lazy('post_detail', kwargs={'pk': self.object.pk})
def get_context_data(self, **kwargs):
context = super(PostDetail, self).get_context_data(**kwargs)
context['comments']=Comment.objects.filter(post=self.object)
context['comment_form']=CommentForm()
return context
def post(self, request, *args, **kwargs):
self.object = self.get_object()
comment_form = self.get_form()
if comment_form.is_valid():
return self.form_valid(comment_form)
else:
return self.form_invalid(comment_form)
def form_valid(self, comment_form):
comment_form.instance.post = self.object
comment_form.save()
return super().form_valid(comment_form)
当我执行它显示的 runserver **/post/1/ 处的 AttributeError “PostDetail”对象没有属性“get_form” **
models.py 是:
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
author = models.ForeignKey(User, on_delete= models.CASCADE,related_name='blog_posts')
content = models.TextField()
def __str__(self):
return self.title
class Comment(models.Model):
post = models.ForeignKey(Post,on_delete=models.CASCADE,related_name='comments')
name = models.CharField(max_length=80)
body = models.TextField()
reply=models.ForeignKey('Comment',on_delete=models.CASCADE,null=True)
def __str__(self):
return self.name
帖子详细信息页面显示 cmets 和评论表单以添加评论。但是当我尝试通过表单添加任何评论时,它会显示错误。我没办法了。 如果您有任何想法,请告诉我。提前谢谢
【问题讨论】:
标签: django django-models django-forms django-views django-templates