You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:27:44