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

Django静态页面访问触发404错误,URL匹配异常求助

Django静态页面访问触发404错误,URL匹配异常求助

别担心,这是刚学Django的小伙伴非常容易踩的一个路由坑!我帮你理清楚问题出在哪,以及怎么快速解决:

问题根源:URL路由的匹配顺序搞反了

Django的URL规则是从上到下依次匹配,只要找到第一个符合的路由就会立刻停止,不会再往下找。你现在的app urls.py里,把<slug:slug>这个动态路由放在了illustrations这个固定路由的前面——这就导致当你访问/illustrations时,Django会把"illustrations"当成一个文章的slug,直接匹配到ArticleDetailView去查数据库,自然找不到对应的Article,就抛出404了。

最简单的解决方案:调整路由顺序

你只需要把固定路径的路由(比如illustrations)移到动态路由(<slug:slug>)的前面,让Django先检查固定路径,再去匹配动态的slug路径。

修改后的urls.py(app)应该是这样的:

from django.urls import path
from . import views
from .views import ArticleListView, ArticleDetailView

urlpatterns = [
    path("", ArticleListView.as_view(), name="home"), # 主页路由
    path("illustrations", views.illustrations, name="illustrations"), # 把静态页面路由移到前面!
    path("<slug:slug>", ArticleDetailView.as_view(), name="article_detail"), # 动态slug路由放最后
]

额外说明:不需要拆分新的app

你完全不需要把主页拆成单独的app,单app的结构完全能搞定这个需求——核心就是路由的匹配顺序问题,调整后就正常了。

以后再添加其他静态页面(比如about、photo-galleries这类固定路径的页面),记得也把它们的路由放在所有动态路由(比如<slug:slug>、<int:pk>这类可变路径)的前面,就不会再出现这种被误匹配的情况啦。

备注:内容来源于stack exchange,提问作者dr_colossus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:48:10