当我想看看能否以更好的方式组织我的项目时,我的应用程序运行正常。我通读了这个教程on structuring a django project。
在我的项目结构如下之前:
我想要做的是将图书应用程序移动到应用程序文件夹中。因此,我这样做并将项目结构更改为以下内容:
然后我更改了views.py和admin.py中的导入
从books.models到apps.books.models。
我还将settings.py中的INSTALLED_APPS
从书籍更改为apps.books。
当我尝试运行syncdb时,出现以下错误:
raise ImproperlyConfigured('ImportError %s: %s' % (app, e.args[0]))
django.core.exceptions.ImproperlyConfigured: ImportError apps.books: No module named apps.books
我在这里乱搞什么,所以找不到我的应用了?
答案 0 :(得分:4)
您的apps文件夹没有__init__.py
文件,因此无法将其识别为python模块
答案 1 :(得分:2)
我得到同样的错误,遵循相同的指南,因为下面列表的最后一点没有被引用。确保您执行了以下更改:
__init__.py
文件(python需要将其识别为包)在您引用外部应用的任何地方更新导入语句:
from projectname.apps.appname.models import YourModel, YourOtherModel
在settings.py
内编辑INSTALLED_APPS
,使其如下所示:
INSTALLED_APPS = (
...
# apps
'projectname.apps.appname1',
'projectname.apps.appname2',
)
指南中未指明此内容:在您的所有urls.py
文件中,更新urlpatterns
!
在:
# client views
urlpatterns += patterns('appname',
...
)
在:
# client views
urlpatterns += patterns('projectname.apps.appname',
...
)
最后请记得通过致电python manage.py syncdb
希望有所帮助。