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

Django博客应用访问/blog/about出现404错误求助

Django 404错误:/blog/about路径无法访问

问题详情

创建博客应用时,访问http://127.0.0.1:8000/blog/about返回404错误,报错信息如下:

Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/blog/about
Using the URLconf defined in django_project.urls, Django tried these URL patterns, in this order:

admin/
blog/ [name='blog-home']

当前路径blog/about与任何URL模式都不匹配。

相关代码文件如下:

views.py

from django.shortcuts import render
from django.http import HttpResponse

def home(request):
    return HttpResponse('<h1>Blog home</h1>')

def about(request):
    return HttpResponse('<h1>Blog About</h1>')

博客应用内的urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='blog-home'),
    path('about/', views.about, name='blog-about'),
]

项目根目录的urls.py

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

问题原因

Django的路由匹配是精确匹配的:

  • 项目根路由将blog/路径转发给博客应用的路由
  • 博客应用内的about路由定义为about/(带末尾斜杠),对应的完整可访问路径是/blog/about/
  • 你访问的/blog/about不带末尾斜杠,和定义的路由模式不匹配,因此返回404。

解决方法

方法1:访问正确的URL

直接访问带末尾斜杠的地址:http://127.0.0.1:8000/blog/about/

方法2:修改路由兼容不带斜杠的请求

修改博客应用内的urls.py,可以选择以下两种方式:

方式A:添加两条路由规则

urlpatterns = [
    path('', views.home, name='blog-home'),
    path('about/', views.about, name='blog-about'),
    path('about', views.about),  # 新增该行,匹配不带斜杠的请求
]

方式B:使用正则路由同时匹配带/不带斜杠

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

urlpatterns = [
    path('', views.home, name='blog-home'),
    re_path(r'about/?$', views.about, name='blog-about'),  # ?表示斜杠可选
]

方法3:确保自动重定向功能开启

检查项目settings.py中的APPEND_SLASH配置,确保其值为True(默认即为True):

APPEND_SLASH = True

开启后,Django会自动将不带斜杠的URL重定向到带斜杠的版本,无需修改路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:52:22