Django多应用项目中无法从birds_eye导入views的报错解决
解决Django中
ImportError: cannot import name 'views' from 'birds_eye'的问题 错误原因
你在项目根目录下的birds_eye(项目配置文件夹)的urls.py中使用from . import views,但该文件夹下不存在views.py文件,或者views.py中未定义HomePage、TestPage、ThanksPage这些类视图,导致Django无法找到对应模块或类。
解决方案
方案1:在项目配置文件夹中创建views.py
- 进入根目录下的
birds_eye文件夹,新建views.py文件。 - 在文件中编写对应类视图,示例代码:
from django.views.generic import TemplateView class HomePage(TemplateView): template_name = "home.html" # 确保templates文件夹下有对应HTML文件 class TestPage(TemplateView): template_name = "test.html" class ThanksPage(TemplateView): template_name = "thanks.html" - 保存后重启Django服务器,验证错误是否消失。
方案2:检查现有views.py的正确性
如果已经存在views.py,请确认:
- 文件名是小写的
views.py,无拼写错误(避免写成Views.py或view.py)。 - 文件内确实定义了
HomePage、TestPage、ThanksPage三个类,且类名大小写完全匹配(比如不要写成homepage或Testpage)。
方案3:将通用视图迁移到独立应用中
若不想在项目配置文件夹存放视图,可新建通用应用(如core)管理全局视图:
- 运行命令创建应用:
python manage.py startapp core - 将
HomePage等类视图写入core/views.py(代码同方案1示例)。 - 在项目
settings.py的INSTALLED_APPS列表中添加core:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 添加该行 'core', 'accounts', 'clubs', # 其他应用... ] - 修改项目
urls.py的导入语句:from django.contrib import admin from django.urls import path, include # 替换原导入语句 from core.views import HomePage, TestPage, ThanksPage urlpatterns = [ path('', HomePage.as_view(), name="home"), path("admin/", admin.site.urls), path("test/", TestPage.as_view(), name="test"), path("thanks", ThanksPage.as_view(), name="thanks"), # 其他路径保持不变 ]
方案4:确认项目配置文件夹的模块识别
确保项目配置文件夹birds_eye被Django识别为合法模块:
- 检查文件夹下是否有
__init__.py文件(空文件即可),无则创建,确保Python将其识别为模块。 - 若使用方案1的方式,需在
settings.py的INSTALLED_APPS中添加birds_eye。
内容的提问来源于stack exchange,提问作者Frostie
相关产品推荐
相关产品推荐

