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

如何修复Django访问post_detail页面时的NoReverseMatch错误?

解决Django中NoReverseMatch找不到'post_remove'的问题

嘿,我刚看完你的问题,这个NoReverseMatch错误其实挺常见的,核心就是Django在反向解析URL的时候找不到名为post_remove的视图配置。咱们一步步来排查和解决:

首先,最可能的原因:项目根URL没包含blog的路由

你有没有检查过项目根目录下的urls.py?如果它没有把blog的URL配置包含进来,那不管blog里写了多少路由,Django都找不到。

根urls.py应该改成这样:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),  # 这行必须有,把blog的路由注册到项目里
]

其次,统一blog/urls.py的路由写法

你现在的blog/urls.py混用了旧的url()和新的path(),虽然理论上兼容,但有时候会导致解析异常。建议统一用Django 2.0+推荐的path()写法,把所有路由都改成一致的:

修改后的blog/urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.post_list, name='post_list'),
    path('post/<int:pk>/', views.post_detail, name='post_detail'),
    path('post/new/', views.post_new, name='post_new'),
    path('post/<int:pk>/edit/', views.post_edit, name='post_edit'),
    path('drafts/', views.post_draft_list, name='post_draft_list'),
    path('post/<int:pk>/publish/', views.post_publish, name='post_publish'),
    path('post/<int:pk>/remove/', views.post_remove, name='post_remove'),
]

最后,收尾操作

  • 保存所有修改的文件
  • 重启Django开发服务器(有时候缓存会导致路由不更新)
  • 清除浏览器缓存(避免旧的页面缓存影响)

这样操作之后,再访问post_detail页面,应该就能正常找到post_remove的路由了。你的post_detail.html里的{% url 'post_remove' pk=post.pk %}写法是完全正确的,只要路由配置没问题,反向解析就会成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 21:27:50