Django传递ID至URL时出现Broken pipe错误,请求排查代码问题
URL传递ID时出现Broken pipe错误排查
问题场景
在通过URL传递分类ID时,出现Broken pipe from ('127.0.0.1', 49903)错误,相关代码如下:
模板中的URL链接引用
<a href="{% url 'he_admin:viewcategory' pk=category.id %}" class="btn btn-outline-info" title="View" ><i class="far fa-eye"></i></a>
Urls模块代码
from django.contrib import admin from django.urls import path from he_admin import views app_name='he_admin' urlpatterns = [ path('',views.index,name='index'), path('addproductscategory',views.add_products_category,name='addcategory'), path('showcategories',views.ShowCategory,name='showcategories'), path('view/<int:pk>',views.ViewCategory,name='viewcategory'), ]
视图函数代码
def ViewCategory(request, pk): try: category=ProductCategory.objects.get(id=pk) except: raise Http404('category does not exist') return render(request,"viewcategory.html",{"category":category})
错误截图

排查与解决思路
先明确错误本质:Broken pipe通常是客户端(浏览器)在服务器未完成响应前就中断了连接,比如用户快速刷新、跳转后关标签页,大概率是偶发的连接问题,但也可能是代码异常导致响应中断。
验证核心功能是否正常:
- 手动访问
http://localhost:8000/he_admin/view/[有效分类ID](比如http://localhost:8000/he_admin/view/1),看能否正常加载页面。如果能正常访问,基本就是客户端操作导致的偶发错误,无需过度担心。 - 如果手动访问也报错,检查两个导入:
ProductCategory模型是否在视图中导入(from .models import ProductCategory),Http404是否导入(from django.http import Http404)。
- 手动访问
代码优化建议:
- 别用
except:这种宽泛的异常捕获,精准捕获模型不存在的异常,避免掩盖其他错误:from django.http import Http404 from .models import ProductCategory def ViewCategory(request, pk): try: category=ProductCategory.objects.get(id=pk) except ProductCategory.DoesNotExist: raise Http404('分类不存在') return render(request,"viewcategory.html",{"category":category}) - 检查
viewcategory.html模板是否存在,里面引用category字段时有没有拼写错误,模板渲染出错也可能导致响应异常触发Broken pipe。
- 别用
开发环境的正常现象:本地用
runserver启动的开发服务器经常会出现这类错误,尤其是调试时频繁操作浏览器,上线后用Nginx+uWSGI这类正式服务器会自动处理这类连接中断情况,不影响生产环境功能。
内容的提问来源于stack exchange,提问作者user12866706
相关产品推荐
相关产品推荐

