运行python manage.py runserver时出现AttributeError错误求助
解决AttributeError: module 'django.views' has no attribute 'home'错误
1. 修正路由文件的导入问题
问题核心
你项目根目录的urls.py错误导入了django.views,但home、predict、result这些视图函数都属于myapp的自定义视图,并非Django自带的views模块。
方案一:直接导入myapp视图
修改项目根目录urls.py:
from django.contrib import admin from django.urls import path from myapp import views # 替换原有的from django import views urlpatterns = [ path('admin/', admin.site.urls), path("", views.home), path("predict/", views.predict), path("predict/result", views.result) ]
方案二:用include拆分路由(推荐)
这种方式更符合Django的模块化规范:
- 项目根目录
urls.py:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path("", include('myapp.urls')) # 将根路由委托给myapp的urls处理 ]
- 同时修正
myapp/urls.py,补充导入自身视图:
from django.contrib import admin from django.urls import path from . import views # 导入当前app的views模块 urlpatterns = [ path("", views.home), path("predict/", views.predict), path("predict/result", views.result) ]
2. 修复myapp/views.py中的其他问题
你的视图文件还有多处会导致后续报错的问题,一起修正:
# 补充必要的依赖导入 import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from django.shortcuts import render # 提前训练模型(避免每次请求重复训练,提升性能) data = pd.read_csv(r"C:\Users\user\Desktop\MAX\diabetes.csv") X = data.drop("Outcome", axis=1) Y = data['Outcome'] X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2) model = LogisticRegression(max_iter=1000) model.fit(X_train, Y_train) # 补充缺失的home视图实现 def home(request): return render(request, "home.html") # 补充缺失的predict视图实现 def predict(request): return render(request, "predict.html") def result(request): # 修正request.Get为request.GET(Django中GET参数为大写) val1 = float(request.GET['n1']) val2 = float(request.GET['n2']) val3 = float(request.GET['n3']) val4 = float(request.GET['n4']) val5 = float(request.GET['n5']) val6 = float(request.GET['n6']) val7 = float(request.GET['n7']) val8 = float(request.GET['n8']) pared = model.predict([[val1, val2, val3, val4, val5, val6, val7, val8]]) # 修正缩进,将逻辑放在函数内部 result1 = "" if pared == [1]: result1 = "positive" elif pared == [0]: result1 = 'negative' # 模板名改为实际存在的模板文件(比如result.html) return render(request, "result.html", {"result": result1})
3. 验证修复
完成所有修改后,重新启动服务器:
python manage.py runserver
服务器即可正常运行。
内容的提问来源于stack exchange,提问作者Maxwell Oduor
相关产品推荐
相关产品推荐

