
Django 项目中访问 /about/ 时出现“Page not found”错误,通常源于 URL 路由未正确指向视图函数;本文将系统梳理常见原因(尤其是 urls.py 中函数名误写),并提供可立即生效的修复方案。
django 项目中访问 `/about/` 时出现“page not found”错误,通常源于 url 路由未正确指向视图函数;本文将系统梳理常见原因(尤其是 `urls.py` 中函数名误写),并提供可立即生效的修复方案。
在 Django 中,“Page not found (404)” 错误表明请求的 URL 路径未能成功映射到任一视图函数。根据你提供的项目结构和代码,核心问题已定位:urls.py 中错误地引用了不存在的 views.about,而实际定义的视图函数名为 index。
? 关键错误分析
你的 views.py 中定义的是:
def index(request):
return HttpResponse("This is about page.")但 urls.py 却尝试调用:
path('about/', views.about), # ❌ 错误:views.about 未定义!这会导致 Django 在路由解析阶段找不到对应函数,直接返回 404 —— 即使服务器正常运行、URL 配置语法无误,函数名不匹配也会触发此错误。
✅ 正确修复步骤
-
修正 urls.py 中的视图引用
将 views.about 改为 views.index(与 views.py 中函数名严格一致):
# myfirstproject/urls.py
from django.contrib import admin # ⚠️ 注意:原代码中 'from.django contrib' 有语法错误,应为 'from django.contrib'
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('about/', views.index), # ✅ 正确:指向 views.py 中定义的 index 函数
]? 提示:原代码中 from.django contrib 是严重语法错误(多了一个点且缺少空格),必须改为 from django.contrib,否则项目启动即报 SyntaxError。
确保 ROOT_URLCONF 设置正确
检查 settings.py 中 ROOT_URLCONF = 'myfirstproject.urls' 是否指向主路由文件 —— 你已正确配置,无需修改。-
验证开发服务器运行状态
在项目根目录(含 manage.py 的层级)执行:python manage.py runserver
访问 http://127.0.0.1:8000/about/,应显示 "This is about page."
? 其他常见陷阱(同步检查)
- 路径结尾斜杠一致性:Django 默认启用 APPEND_SLASH=True(在 settings.py 中),因此访问 /about 会自动重定向至 /about/。建议始终使用带尾部斜杠的 URL(如 path('about/', ...)),避免歧义。
- 视图函数参数完整性:index(request) 必须接收 request 参数,你已满足。
- Python 文件编码与缩进:确认 views.py 和 urls.py 保存为 UTF-8 编码,且使用 4 空格缩进(非 Tab),避免隐藏语法错误。
✅ 进阶建议:提升可维护性
未来推荐将关于页面逻辑封装为独立视图,并采用命名空间与 name 参数增强可读性:
# urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('about/', views.index, name='about'), # 添加 name 方便模板中 {% url 'about' %}
]<!-- 模板中可安全反向解析 -->
<a href="{% url 'about' %}">关于我们</a>通过以上修正,404 错误将被彻底解决。记住:Django 路由是“字符串到函数”的精确映射,函数名拼写、模块导入路径、语法格式三者缺一不可。调试时优先检查 urls.py 与 views.py 的函数名一致性,这是最常见也最容易忽略的根源。


















