Django应用无法访问models:已创建flights app却提示找不到模块
flights模块找不到的问题 别着急,这个问题是Django新手常碰到的,我来帮你拆解原因和解决办法:
为什么会出现这个错误?
当你用python manage.py startapp flights创建应用后,Django并不会自动把它加入到项目的已注册应用列表里。Python的模块导入机制只会搜索系统路径和项目根目录下的已注册应用,没注册的话,自然找不到flights这个模块。另外,如果在错误的目录下运行shell,或者应用的目录结构不完整(比如缺了__init__.py),也会触发这个报错。
一步步解决问题
把
flights添加到项目的INSTALLED_APPS中
这是最核心的步骤!打开项目根目录下的settings.py,找到INSTALLED_APPS列表,把你的应用加进去。有两种写法:INSTALLED_APPS = [ # 原有默认的应用(比如django.contrib.admin等) 'flights', # 简单写法 # 或者更规范的写法(推荐,尤其是应用有自定义配置时) # 'flights.apps.FlightsConfig', ]只有注册了应用,Django才会把它的目录加入到Python的模块搜索路径中。
确保在正确的目录下运行shell
你必须在包含manage.py的项目根目录下执行python manage.py shell。比如你的项目结构是:myproject/ manage.py myproject/ settings.py flights/ models.py那你得进入
myproject/目录(有manage.py的那个)再运行shell命令。检查应用目录结构是否完整
确认flights目录下有__init__.py(空文件就行)和models.py。如果是用startapp命令创建的,这些文件会自动生成;但如果是手动创建的应用,记得补上这两个文件。重启Django shell
修改settings.py后,当前的shell进程不会读取新配置,所以输入exit()退出当前shell,重新运行python manage.py shell,再试试from flights.models import *,应该就能成功了。
内容的提问来源于stack exchange,提问作者Husrat

