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

Django中CreateView无法接收urls.py传递的kwargs,如何解决?

解决方法

你遇到的差异本质是不同类视图的get_context_data方法入参合并逻辑不同,不需要修改urls层的传参逻辑,仅需要调整视图内参数的获取方式即可:

核心方案

Django所有通用类视图都会自动将urls中path()传入的额外参数、路径捕获参数统一存入视图实例的self.kwargs属性中,直接从该属性取值即可:

class OtherClassView(CreateView):
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # 仅修改这一行,从self.kwargs取值即可
        section = self.kwargs["foo"]
        # 其余原有逻辑保持不变
        return context

差异原因说明

  • TemplateView的get_context_data实现中,会主动将self.kwargs合并到方法入参的kwargs中,所以你可以直接从入参里取到额外参数
  • CreateView继承自FormView,它的get_context_data不会做这个合并,因此入参kwargs中不存在urls传入的额外参数

这个修改完全不需要调整现有传参链路,仅需修改取值的来源即可,成本最低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 12:21:03