我正试图通过Django项目的教程。
我已经做到了这一点:https://docs.djangoproject.com/en/1.3/intro/tutorial02/#s-make-the-poll-app-modifiable-in-the-admin但是我发现某些文件中存在错误,例如在admin.py文件中:
from polls.models import Poll
from django.contrib import admin
admin.site.register(Poll)
我收到了错误
Unresolved import: Poll
模型的定义如教程中所述:
import datetime
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __unicode__(self):
return self.question
def was_published_today(self):
return self.pub_date.date() == datetime.date.today()
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
def __unicode__(self):
return self.choice
本教程指出,当我在添加管理文件后重新启动服务器时,我应该看到管理页面中引用的轮询应用程序位于127.0.0.1:8000,但我所看到的只是:
我也看到了
Unresolved import: Poll admin.py /newProj/src/newProj/polls line 0 PyDev Problem
Unresolved import: settings manage.py /firstproject/firstproject line 10 PyDev Problem
Unresolved import: settings manage.py /newProj/src/newProj line 10 PyDev
错误是我不会看到使用民意调查应用更新网站管理页面的原因吗?
如何解决这些错误?
答案 0 :(得分:2)
/newProj/src/newProj/polls
和/firstproject/firstproject
... eeek,这看起来很诚实,就像是一些问题的根源。好的,一些概念:
Python包:所有python应用程序都可以由包组成。这些基本上只是包含__init__.py
文件的目录。
python如何找到软件包:嗯,python在查找软件包时可以做两件事之一:
__init__.py
,则可以从其中的文件导入。PYTHONPATH
环境变量,或sys.path
- 相同的东西),然后搜索到子包。django项目如何布局:默认的django项目如下所示:
project_folder/
__init__.py
settings.py # config
urls.py # url config
polls/
__init__.py # makes polls a package
models.py # models
admin.py # admin
views.py # app views
forms.py # per app forms
urls.py # per app urls
在此布局中,当您admin.py
时,runserver
有两种可能性:
from models import Poll
- 这是有效的,因为您仍然在您的包裹范围内。from polls.models import Poll
- 之所以有效,是因为polls
是一个软件包,因此您运行的父级runserver
也是如此。虽然很诱人,但不要将project_folder
用作包。一旦重命名目录,它就会破坏代码(例如,在部署期间)。
所以,记住这一切:
__init__.py
文件是否存在于正确的位置,并且您正在使用类似上面的目录结构。也可能最好在IDE外面检查 - IDE可能很难。验证您的路径正在搜索您认为的位置。当前目录应该可以正常工作;如果不是,你可以看到
import sys
print sys.path
将允许您查看您正在寻找的位置。您可以显式添加当前目录,但您不需要。
答案 1 :(得分:1)
您正在使用Pydev,它在导入过程中添加了一个额外的抽象层。
使用浅色文本编辑器和控制台进行学习。一旦Python Path和导入逻辑足够清晰,您就可以切换到IDE,这样您就可以自己设置Pydev了。
答案 2 :(得分:0)
错误是我不能看到网站的原因 使用民意调查应用程序更新管理页面?
此问题的答案位于https://docs.djangoproject.com/en/1.3/intro/tutorial02/#customize-the-admin-form
的同一页面答案 3 :(得分:0)
试试这个:
import newProj.poll.models