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

Django访问/products/5出现Error 404 Not Found问题求助

Django URL 404错误排查与修复

问题原因分析

  • URL正则语法错误:命名捕获组缺少必要括号,正确格式应为(?P<param_name>匹配规则),原代码中?P<productid>和?P<name>前未加(,导致Django无法识别参数;同时路径与视图映射错误,products路径指向了views.contact,users路径指向了views.about,完全不匹配对应业务逻辑。
  • 正则匹配范围不符:原products路径正则结尾强制要求/,但请求路径/products/5无结尾斜杠,导致匹配失败。
  • views函数语法错误:users函数的格式化字符串中用了俄文字母О(而非数字0),后续调用会触发格式化异常。

修复方案

1. 修正urls.py的正则与视图映射

替换为以下代码:

from django.urls import re_path
from django.urls import path
from firstapp import views

urlpatterns = [
    # 修复捕获组语法,映射正确视图,允许路径结尾带/或不带
    re_path(r'^products/(?P<productid>\d+)/?$', views.products),
    # 修复users路径的捕获组与视图映射
    re_path(r'^users/(?P<id>\d+)/(?P<name>\D+)/?$', views.users),
    re_path(r'^about/contact/', views.contact),
    re_path(r'^about/', views.about),  # 加/避免匹配无关路径(如/aboutxxx)
    path('', views.index),
]

2. 修复views.py的格式化字符串错误

修改users函数:

def users(request, id, name):
    output = "<h2>User</h2><h3>id: {0} Name:{1}</h3>".format(id, name)
    return HttpResponse(output)

3. 验证修复

重启Django开发服务器,访问http://127.0.0.1:8000/products/5(注意原请求IP127.0.0.l是笔误,需改为127.0.0.1),即可正常显示产品信息。

内容的提问来源于stack exchange,提问作者Goip lol

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:35:30