
Django 项目中访问 /about/ 路径时出现 Page not found(404)错误,通常是 URL 路由未正确关联视图函数所致;本文将系统梳理常见原因并提供可立即生效的修复方案。
django 项目中访问 `/about/` 路径时出现 page not found(404)错误,通常是 url 路由未正确关联视图函数所致;本文将系统梳理常见原因并提供可立即生效的修复方案。
在 Django 中,“Page not found (404)” 并非服务器故障,而是路由系统未能将请求 URL 映射到有效的视图处理函数。根据您提供的项目结构和代码,问题根源非常明确:URL 配置中错误地引用了 views.urls,而实际定义的视图函数名为 index。
? 核心问题定位
查看您的 urls.py 片段:
path('about/', views.urls) # ❌ 错误:views.urls 不存在但 views.py 中仅定义了:
def index(request):
return HttpResponse("This is about page.") # ✅ 正确函数名是 indexDjango 在尝试调用 views.urls() 时抛出 AttributeError,随后路由匹配失败,最终返回 404 响应(Django 默认行为:未匹配任何 URL 模式即 404)。
✅ 正确修复步骤
-
修正主路由文件 myfirstproject/urls.py
将 views.urls 改为 views.index,并确保语法规范(注意逗号、导入路径):
# myfirstproject/urls.py
from django.contrib import admin # ✅ 修正拼写:'from django.contrib'
from django.urls import path
from . import views # 确保 views.py 与 urls.py 同级(即同在 myfirstproject/ 目录下)
urlpatterns = [
path('admin/', admin.site.urls),
path('about/', views.index), # ✅ 正确指向视图函数
]⚠️ 注意:原文中 from.django contrib 是明显拼写错误(多了一个点且空格错位),必须改为 from django.contrib,否则启动服务会直接报 SyntaxError。
Django Unfold下载提供使用 django-unfold (v0.56+) 构建高级 Django 管理界面的专业指导。当用户提及 django-unfold、unfold admin 等内容时使用此技能。
-
验证视图函数位置与命名一致性
确保 views.py 位于 myfirstproject/ 包内(与 urls.py 同目录),且函数名严格匹配路由引用:# myfirstproject/views.py from django.http import HttpResponse def index(request): # ← 名称必须与 urls.py 中 views.index 完全一致 return HttpResponse("This is about page.") 重启开发服务器
修改后务必重启 Django 开发服务器(python manage.py runserver),因为 URL 配置在启动时加载,热重载不生效。
? 补充建议:提升可维护性的最佳实践
-
使用命名空间与 app_name(推荐用于中大型项目)
在 myfirstproject/urls.py 中添加:app_name = 'myfirstproject' urlpatterns = [ path('admin/', admin.site.urls), path('about/', views.index, name='about'), # 添加 name 方便反向解析 ] 检查 ROOT_URLCONF 设置
确认 settings.py 中 ROOT_URLCONF = 'myfirstproject.urls' 指向的是正确的主路由模块(您已正确配置,无需修改)。启用 DEBUG 模式下的详细错误页
当前 DEBUG = True 已开启,若仍有问题,访问 /about/ 时将看到完整的异常堆栈(如 AttributeError: module 'myfirstproject.views' has no attribute 'urls'),这是快速定位的关键线索。
✅ 验证结果
完成上述修改后,在浏览器中访问 http://127.0.0.1:8000/about/,应立即显示:
This is about page.
而非 404 页面。
? 提示:Django 的 URL 解析是严格顺序匹配的。确保 path('about/', ...) 不被更宽泛的模式(如 path('<slug:slug>/', ...))提前拦截。当前项目无此风险,但未来扩展时需注意路由顺序。
遵循以上步骤,即可彻底解决 Django 关于页面 404 问题。核心原则始终不变:URL 路径 ↔ 视图函数名 ↔ Python 模块路径,三者必须精确对应。


















