django.core.exceptions.FieldError:为注释指定了未知字段(正文)

django.core.exceptions.FieldError:为注释指定了未知字段(正文),django,Django,我是Django的新手,收到标题中写的错误。我用谷歌搜索它,但我找不到任何东西。事实上,我不想做的只是在我的博客网站上添加“评论”。我添加代码如下。谢谢你 我的文件: #form.py from django import forms from django.db import models from blog.models import Comment class EmailPostForm(forms.Form): name = forms.CharField(max_leng

我是Django的新手,收到标题中写的错误。我用谷歌搜索它,但我找不到任何东西。事实上,我不想做的只是在我的博客网站上添加“评论”。我添加代码如下。谢谢你 我的文件:

#form.py

from django import forms
from django.db import models
from blog.models import Comment


class EmailPostForm(forms.Form):
    name = forms.CharField(max_length=25)
    email = forms.EmailField()
    to = forms.EmailField()
    comments = forms.CharField(required=False, widget=forms.Textarea)
    email = forms.EmailField()
    to = forms.EmailField()
    comments = forms.CharField(required=False, widget=forms.Textarea)


class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'email', 'body ')

#models.py

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse

class Post(models.Model):
    STATUS_CHOICES = (
            ('draft', 'Draft'),
            ('published', 'Published'),
            )
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250, unique_for_date="publish")
    author = models.ForeignKey(User, related_name='blog_posts')
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10, choices=STATUS_CHOICES,      
    default="draft")

    objects = models.Manager()
    published = PublishedManager()


    class Meta:
        ordering = ('-publish', )

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.publish.year,
            self.publish.strftime('%m'),
            self.publish.strftime('%d'),
            self.slug])


class Comment(models.Model):
    post = models.ForeignKey(Post, related_name='comments')
    name = models.CharField(max_length=80)
    email = models.EmailField()
    body = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    active = models.BooleanField(default=True)

    class Meta:
        ordering = ('created',)

    def __str__(self):
        return "Comment by {} on {}".format(self.name, self.post)

#viwes.py

from django.shortcuts import render, get_object_or_404
from .models import Post
from django.core.paginator import Paginator, EmptyPage,\
 PageNotAnInteger
from django.views.generic import ListView
from django.core.mail import send_mail
from .forms import EmailPostForm, CommentForm


def post_list(request):
    posts = Post.objects.all()
    object_list = Post.objects.all()
    paginator = Paginator(object_list, 3) # 3 posts in each page
    page = request.GET.get('page')
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
        posts = paginator.page(1)
    except EmptyPage:
        posts = paginator.page(paginator.num_pages)
    return render(request,
 'blog/post/list.html',
 {'page': page,
 'posts': posts})

def post_detail(request, year, month, day, post):
    post = get_object_or_404(Post, slug=post,
    status='published',
    publish__year=year,
    publish__month=month,
    publish__day=day)
    comments = post.comments.filter(active=True)
    if request.method == 'POST':
        comment_form = CommentForm(data=request.POST)
        if comment_form.is_valid():
            new_comment = comment_form.save(commit=False)
            new_comment.post = post
            new_comment.save()
    else:
        comment_form = CommentForm()
    return render(request, 'blog/post/detail.html', {'post':         
post,'comments':
comments,'comment_form': comment_form})

class PostListView(ListView):
    queryset = Post.objects.all()
    context_object_name = 'posts'
    paginate_by = 3
    template_name = 'blog/post/list.html'
def post_share(request, post_id):
    post = get_object_or_404(Post, id=post_id, status='published')
    sent = False
    if request.method == 'POST':
        form = EmailPostForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            post_url = request.build_absolute_uri(post.get_absolute_url())
            subject = '{} ({}) recommends you reading "    
                            {}"'.format(cd['name'], cd['email'],
                                                                post.title)
            message = 'Read "{}" at {}\n\n{}\'s comments:     
{}'.format(post.title, post_url,
cd['name'], cd['comments'])
            send_mail(subject, message, 'admin@myblog.com',
                                                         [cd['to']])
            sent = True
    else:
        form = EmailPostForm()
        return render(request, 'blog/post/share.html', {'post': post,
 'form': form,
  'sent': sent})


def post_share(request, post_id):
    post = get_object_or_404(Post, id=post_id, status='published')
    if request.method == 'POST':
        form = EmailPostForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            post_url = request.build_absolute_uri(post.get_absolute_url())
            subject = '{} ({}) recommends you reading "    
                {}"'.format(cd['name'], cd['email'],                                                                 
                                                    post.title)
            message = 'Read "{}" at {}\n\n{}\'s comments: 
                                {}'.format(post.title, post_url,                                                                         
                                            cd['name'], cd['comments'])
            send_mail(subject, message, 'admin@myblog.com',
                      [cd['to']])
            sent = True
    else:
        form = EmailPostForm()
    return render(request, 'blog/post/share.html', {'post': post,
 'form': form})

#EROR

Unhandled exception in thread started by <function check_errors.  
    <locals>.wrapper at 0x0435D198>
    Traceback (most recent call last):
      File "C:\Python3.5.2\lib\site-packages\django\utils\autoreload.py", line 226 , in wrapper
        fn(*args, **kwargs)
      File "C:\Python3.5.2\lib\site-        
    packages\django\core\management\commands\runserver.py", line 121, in inner_run
        self.check(display_num_errors=True)
      File "C:\Python3.5.2\lib\site-packages\django\core\management\base.py",         line 374, in check
        include_deployment_checks=include_deployment_checks,
      File "C:\Python3.5.2\lib\site-packages\django\core\management\base.py",     line 361, in _run_checks
        return checks.run_checks(**kwargs)
      File "C:\Python3.5.2\lib\site-packages\django\core\checks\registry.py",     line 81, in run_checks
        new_errors = check(app_configs=app_configs)
      File "C:\Python3.5.2\lib\site-packages\django\core\checks\urls.py", line 14, in check_url_config
                return check_resolver(resolver)
       File "C:\Python3.5.2\lib\site-packages\django\core\checks\urls.py", line 24, in check_resolver
            for pattern in resolver.url_patterns:
      File "C:\Python3.5.2\lib\site-packages\django\utils\functional.py", line 35,     in __get__
        res = instance.__dict__[self.name] = self.func(instance)
      File "C:\Python3.5.2\lib\site-packages\django\urls\resolvers.py", line 313, in url_patterns
        patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
      File "C:\Python3.5.2\lib\site-packages\django\utils\functional.py", line  35, in __get__
        res = instance.__dict__[self.name] = self.func(instance)
       File "C:\Python3.5.2\lib\site-packages\django\urls\resolvers.py", line 306, in urlconf_module
        return import_module(self.urlconf_name)
      File "C:\Python3.5.2\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
      File "<frozen importlib._bootstrap>", line 986, in _gcd_import
      File "<frozen importlib._bootstrap>", line 969, in _find_and_load
      File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
      File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
      File "<frozen importlib._bootstrap_external>", line 665, in exec_module
      File "<frozen importlib._bootstrap>", line 222, in 
    _call_with_frames_removed
      File "C:\project\mysite\mysite\urls.py", line 21, in <module>
        url(r'^blog/', include('blog.urls',namespace='blog', app_name='blog')),
          File "C:\Python3.5.2\lib\site-packages\django\conf\urls\__init__.py", line 50,  
    in include
    urlconf_module = import_module(urlconf_module)
      File "C:\Python3.5.2\lib\importlib\__init__.py", line 126, in 
    import_module
        return _bootstrap._gcd_import(name[level:], package, level)
          File "<frozen importlib._bootstrap>", line 986, in _gcd_import
          File "<frozen importlib._bootstrap>", line 969, in _find_and_load
          File "<frozen importlib._bootstrap>", line 958, in 
    _find_and_load_unlocked
          File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
          File "<frozen importlib._bootstrap_external>", line 665, in exec_module
      File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
      File "C:\project\mysite\blog\urls.py", line 2, in <module>
        from . import views
      File "C:\project\mysite\blog\views.py", line 7, in <module>
        from .forms import EmailPostForm, CommentForm
      File "C:\project\mysite\blog\forms.py", line 16, in <module>
        class CommentForm(forms.ModelForm):
      File "C:\Python3.5.2\lib\site-packages\django\forms\models.py", line 257, in __new__
        raise FieldError(message)
    django.core.exceptions.FieldError: Unknown field(s) (body ) specified for     Comment
#form.py
来自django导入表单
从django.db导入模型
从blog.models导入注释
类EmailPostForm(forms.Form):
name=forms.CharField(最大长度=25)
email=forms.EmailField()
to=forms.EmailField()
comments=forms.CharField(必需=False,widget=forms.Textarea)
email=forms.EmailField()
to=forms.EmailField()
comments=forms.CharField(必需=False,widget=forms.Textarea)
类注释表单(forms.ModelForm):
类元:
模型=注释
字段=(‘名称’、‘电子邮件’、‘正文’)
#models.py
从django.db导入模型
从django.utils导入时区
从django.contrib.auth.models导入用户
从django.core.urlResolver反向导入
班级职务(models.Model):
状态_选项=(
(“草稿”、“草稿”),
(“已出版”、“已出版”),
)
title=models.CharField(最大长度=250)
slug=models.SlugField(最大长度=250,对于发布日期是唯一的)
author=models.ForeignKey(用户,相关的\u name='blog\u posts')
body=models.TextField()
publish=models.DateTimeField(默认值=timezone.now)
created=models.DateTimeField(auto\u now\u add=True)
updated=models.DateTimeField(auto\u now=True)
状态=模型.CharField(最大长度=10,选项=状态选项,
默认值=“草稿”)
objects=models.Manager()
published=PublishedManager()
类元:
排序=('-publish',)
定义(自我):
返回自己的标题
def get_绝对_url(自身):
返回反向('blog:post_detail',args=[self.publish.year,
self.publish.strftime(“%m”),
self.publish.strftime(“%d”),
自我控制(slug])
类注释(models.Model):
post=模型.外键(post,相关的\u name='comments')
name=models.CharField(最大长度=80)
email=models.EmailField()
body=models.TextField()
created=models.DateTimeField(auto\u now\u add=True)
updated=models.DateTimeField(auto\u now=True)
active=models.BooleanField(默认值=True)
类元:
排序=(‘已创建’,)
定义(自我):
返回“{}对{}的评论”。格式(self.name,self.post)
#viwes.py
从django.shortcuts导入渲染,获取\u object\u或\u 404
从。模型导入后
从django.core.paginator导入paginator,清空页面\
寻呼机
从django.views.generic导入ListView
从django.core.mail导入发送邮件
从.forms导入EmailPostForm、CommentForm
def post_列表(请求):
posts=Post.objects.all()
object\u list=Post.objects.all()
paginator=paginator(对象列表,3)#每页3篇文章
page=request.GET.GET('page')
尝试:
posts=分页器。第页(第页)
除第页外,第页:
posts=分页器。第(1)页
除空页外:
posts=paginator.page(paginator.num_页面)
返回渲染(请求,
“blog/post/list.html”,
{'page':第页,
“posts”:posts})
def post_详细信息(请求、年、月、日、职务):
post=获取对象或404(post,slug=post,
状态='已发布',
发布年=年,
发布月份=月份,
发布(天=天)
comments=post.comments.filter(active=True)
如果request.method==“POST”:
评论形式=评论形式(数据=request.POST)
如果注释形式有效():
new\u comment=comment\u form.save(commit=False)
new_comment.post=post
新建_comment.save()
其他:
注释形式=注释形式()
返回呈现(请求'blog/post/detail.html',{'post':
张贴“评论”:
注释,'comment_form':comment_form})
类PostListView(ListView):
queryset=Post.objects.all()
上下文\对象\名称='posts'
分页单位=3
模板名称='blog/post/list.html'
def post_共享(请求、post_id):
post=get\u object\u或\u 404(post,id=post\u id,status='published')
发送=错误
如果request.method==“POST”:
form=EmailPostForm(request.POST)
如果form.is_有效():
cd=表格.U数据
post\u url=request.build\u absolute\u uri(post.get\u absolute\u url())
主题=“{}({})建议您阅读”
{}'.格式(cd['name'],cd['email'],
职位(职位名称)
message='在{}处读取{}\n\n{}的注释:
{}格式(post.title、post_url、,
cd['name'],cd['comments'])
发送邮件(主题、消息等)admin@myblog.com',
[cd['to']]
发送=真
其他:
form=EmailPostForm()
返回呈现(请求'blog/post/share.html',{'post':post,
“形式”:形式,
“已发送”:已发送})
def post_共享(请求、post_id):
post=get\u object\u或\u 404(post,id=post\u id,status='published')
如果request.method==“POST”:
form=EmailPostForm(request.POST)
如果form.is_有效():
cd=表格.U数据
post\u url=request.build\u absolute\u uri(post.get\u absolute\u url())
主题=“{}({})建议您阅读”
{}'.格式(cd['name'],cd['email'],
职位(职位名称)
message='在{}处读取{}\n\n{}的注释:
{}格式(post.title、post_url、,
cd['name'],cd['comments'])
发送邮件(主题、消息等)admin@myblog.com',
[cd['to']]
发送=真
其他:
form=EmailPostForm()
重新
class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'email', 'body')
class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ('name', 'email', 'body') 
  body = BooleanField(name="The comment's body text")