Django:name 'Post' 未在 InteractiveConsole 中定义

Django:name 'Post' is not defined in InteractiveConsole

我是 Django 的新手,正在尝试基于它开发一个博客。

python manage.py makemigrationspython manage.py migrate的命令运行良好后,进入InteractiveConsole执行Post.objects.all(),出现NameError。

>>> Post.objects.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'Post' is not defined

此外,当运行 localhost:8000时,服务器给出了另一个NameError。

NameError at /
name 'Post' is not defined
Request Method: GET
Request URL:    http://localhost:8000/
Django Version: 2.0
Exception Type: NameError
Exception Value:    
name 'Post' is not defined
Exception Location: D:\experiment\blogproject\blog\views.py in index, line 6
Python Executable:  d:\experiment\blogproject_env\Scripts\python.exe
Python Version: 3.6.3
Python Path:    
['D:\experiment\blogproject',
'd:\experiment\blogproject_env\Scripts\python36.zip',
'd:\experiment\blogproject_env\DLLs',
'd:\experiment\blogproject_env\lib',
'd:\experiment\blogproject_env\Scripts',
'd:\professional soft\python3.6.3\Lib',
'd:\professional soft\python3.6.3\DLLs',
'd:\experiment\blogproject_env',
'd:\experiment\blogproject_env\lib\site-packages']
Server time:    星期五, 22 十二月 2017 16:08:10 +0800

下面是我的views.py。

from django.shortcuts import render
from django.http import HttpResponse


def index(request):
    post_list = Post.objects.all().order_by('-created_time')
    return render(request, 'blog/index.html', context={'post_list': post_list})

以防万一,models.py中有Post代码。

classPost(models.Model): 标题 = models.CharField(max_length=70)

body = models.TextField()

created_time = models.DateTimeField()
modified_time = models.DateTimeField()

excerpt = models.CharField(max_length=200, blank=True)

category = models.ForeignKey(Category, on_delete=models.CASCADE)
tags = models.ManyToManyField(Tag, blank=True)

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

def __str__(self):
    return self.title

非常感谢!

您已在视图中导入模型。

在你的情况下应该是这样的:

from appName.models import Post

希望对您有所帮助!

访问您的 Interactive Shell 不会自动为您导入所有需要的文件。在开始使用那些非默认方法、函数、模型等之前,您需要导入它。

在您的情况下,您必须在使用前导入 Post 模型。

from app.models import Post

其中 app 是模型所在的实际应用。

这也算你的观点,使用前必须先导入模型。