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

无法从kwargs获取Primary Key:AddToCartView视图中pk返回None的问题排查

解决AddToCartView中pk输出为None的问题

嘿,我来帮你排查这个问题!你遇到的pk输出为None的情况,大概率是URL路由和视图的参数传递不匹配导致的,咱们一步步拆解可能的原因:

  • 路由配置没正确定义pk参数
    你的视图通过self.kwargs.get('pk')获取参数,这要求你的URL路由里必须明确声明<int:pk>这样的参数位置。举个例子:
    错误的路由(没传递pk):

    path('add-to-cart/', AddToCartView.as_view(), name='add_to_cart')
    

    正确的路由(包含pk参数):

    path('add-to-cart/<int:pk>/', AddToCartView.as_view(), name='add_to_cart')
    
  • 请求的URL没有携带pk值
    就算路由配置对了,如果你请求的是/add-to-cart/这种不带具体id的地址,视图也拿不到pk。你需要确保请求的URL是类似/add-to-cart/5/这样的,其中5是对应商品的实际id。

  • 路由参数名和视图获取的参数名不统一
    比如你路由里写的是<int:item_id>,但视图里却用self.kwargs.get('pk'),这种参数名不一致的情况也会导致拿到None。要么把路由改成<int:pk>,要么视图里改成self.kwargs.get('item_id')。

另外,你可以在print(pk)前面加一行print(self.kwargs),看看这个字典里到底有哪些参数,这样能更直观地定位问题所在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:27:39