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

调用Django REST Framework商品详情接口返回404且URL含[object Object]如何解决

报错原因

请求路径中出现[object Object]的核心原因是调用getProductDetails方法时传入的参数不是预期的字符串类型slug值,而是直接传入了完整的商品对象。JS/TS进行模板字符串拼接时会自动调用对象的toString()方法,最终拼接出/product/[object Object]/的非法请求路径,后端路由无法匹配该路径规则,因此返回404错误。

修复方案
  • 修正getProductDetails方法的调用传参,仅传入商品对象中的slug字段值,不要传入完整商品对象:
// 错误调用示例:直接传入商品对象
this.productService.getProductDetails(product).subscribe()

// 正确调用示例:仅传入商品对象的slug属性
this.productService.getProductDetails(product.slug).subscribe()
  • 可选优化:给getProductDetails方法增加运行时参数校验,避免后续再出现同类传参错误:
getProductDetails(slug: string): Observable<any>{
  // 运行时校验参数类型,非法参数直接抛出明确错误
  if (typeof slug !== 'string') {
    throw new Error('getProductDetails方法要求传入字符串类型的slug参数')
  }
  return this.http.get<any>(`${this.baseurl}/product/${slug}/`, {headers: this.httpHeaders})
}
  • 补充检查:确认Django总路由已经将商品模块路由注册到product/前缀下,示例配置如下:
# 项目根目录的urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 注册商品模块路由,确保前缀为product
    path('product/', include('你商品模块的app名称.urls')),
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:45:02