Django:name 'Post' 未在 InteractiveConsole 中定义
Django:name 'Post' is not defined in InteractiveConsole
我是 Django 的新手,正在尝试基于它开发一个博客。
python manage.py makemigrations
和python 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 是模型所在的实际应用。
这也算你的观点,使用前必须先导入模型。
我是 Django 的新手,正在尝试基于它开发一个博客。
python manage.py makemigrations
和python 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 是模型所在的实际应用。
这也算你的观点,使用前必须先导入模型。