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

跟随YouTube新手教程学习Django时遇到URL匹配不一致的404错误

跟随YouTube新手教程学习Django时遇到URL匹配不一致的404错误

你遇到的404问题主要来自两个关键细节:URL配置的拼接错误,以及访问路径和配置路径的格式不统一。我们一步步来解决:

1. 先看错误信息里的核心问题

从你提供的404提示可以看到,Django识别的URL pattern是products/ new(注意products/和new之间有空格),但你实际访问的是products/new/(没有空格且带结尾斜杠)——这说明你的主URL配置(pyshop.urls)没有正确引入products app的URL规则,导致拼接出了带空格的无效pattern。

2. 修正主URL配置(pyshop/urls.py)

你需要使用Django的include方法来正确引入products app的URL,而不是手动拼接路径。修改后的主urls.py应该是这样:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 正确引入products app的URL配置,自动拼接路径
    path('products/', include('products.urls')),
]

这样products app里的所有URL都会自动拼接在products/后面,不会出现莫名其妙的空格。

3. 统一访问路径和URL配置的格式

Django的path是精确匹配的:你访问的是带结尾斜杠的products/new/,但你的app urls里配置的是path('new', views.new)(不带斜杠)。虽然Django默认APPEND_SLASH=True会自动处理重定向,但为了避免混淆,建议统一格式:

修改products/urls.py,给path加上结尾斜杠,和访问路径保持一致:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
    path('salt/', views.trending),  # 对应/products/salt/
    path('new/', views.new),        # 对应/products/new/
]

如果你更习惯不带斜杠的访问,也可以把访问路径改成products/new,同时保持配置里的path('new', views.new)不变。

4. 验证视图和URL的对应关系

注意到你把views.trending绑定到了salt路径,这应该是你测试时的临时修改,后续记得调整回合理的对应关系(比如salt对应专属的salt视图,trending对应trending路径),避免自己混淆。

最后一步

重启Django开发服务器,再次访问http://127.0.0.1:8000/products/new/,应该就能正常显示“New Products”了。

备注:内容来源于stack exchange,提问作者J. Toney

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 17:12:56