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

部署Django博客出现NoReverseMatch错误,本地运行正常求助

部署Django博客时出现NoReverseMatch错误排查

错误现象

部署Django博客项目时,访问/post/5/触发NoReverseMatch错误,提示找不到post_delete的视图函数或路由名称,但本地环境运行完全正常。此前新增功能时也曾出现该错误,之后自行恢复。

错误详情

NoReverseMatch at /post/5/
Reverse for 'post_delete' not found. 'post_delete' is not a valid view function or pattern name.


相关代码

博客应用(blog)的urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.postList, name='post_list'),
    path('post/new/', views.postNew, name='post_new'),
    path('post/<int:pk>/', views.postDetail, name='post_detail'),
    path('post/edit/<int:pk>/', views.postEdit, name='post_edit'),
    path('post/delete/<int:pk>/', views.postDelete, name='post_delete'),
]

博客应用(blog)的views.py(postDelete函数)

def postDelete(request, pk):
    post = get_object_or_404(Post, pk=pk)
    post.delete()
    return redirect("post_list")

出错模板post_detail.html相关代码

<aside style="float: left;">
    <a class="btn btn secondary" href="{% url 'post_delete' pk=post.pk %}">
        {% include './icons/lock-fill.svg' %}
    </a>
</aside>

项目根urls.py

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

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

排查建议

  • 确认部署环境代码同步:本地已添加post_delete路由,但部署环境可能未同步最新代码。可执行cat blog/urls.py查看部署环境的路由配置是否完整。
  • 清除Django缓存:Django会缓存URL配置,代码更新后缓存可能未刷新。执行命令清除缓存:
    python manage.py clearcache
    
    若使用Redis、Memcached等外部缓存服务,需同时清除对应缓存数据。
  • 重启部署服务:使用uWSGI、Gunicorn等服务时,代码更新后必须重启服务才能加载新的路由配置,否则会沿用旧的URL规则。
  • 检查视图函数完整性:确认部署环境的views.py中postDelete函数存在,且函数名拼写(大小写、字符)与路由配置完全一致。
  • 排查路由冲突:检查部署环境是否有其他应用的路由与post_delete命名冲突,或根urls.py是否存在覆盖blog应用路由的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 05:25:31