为啥我需要在 Django 中将 kwargs 设置为 CBV 的参数

Posted

技术标签:

【中文标题】为啥我需要在 Django 中将 kwargs 设置为 CBV 的参数【英文标题】:Why do i need to set kwargs as parameter of CBV in Django为什么我需要在 Django 中将 kwargs 设置为 CBV 的参数 【发布时间】:2018-12-10 16:39:26 【问题描述】:

在覆盖 get_context_data 时,2 个参数被传递给 self 和 **kwargs,而 CBV 已经有 kwargs 在 self.kwargs(从 URL 传递到 CBV 的参数)

为什么我们需要这个额外的 kwargs(一个传递给函数)

Example of overriding

甚至使用函数 kwargs 更新上下文字典,如第 64 行所示。

【问题讨论】:

【参考方案1】:

get_context_data 中的参数kwargs 本身与视图的self.kwargs 属性无关。

调用捕获关键字参数kwargs的参数只是一个命名约定。

我的建议是查看 Django 提供的不同的基于类的视图和底层的 Mixin 以获得更好的理解。网站ccbv.co.uk 对此非常有帮助。

【讨论】:

以上是关于为啥我需要在 Django 中将 kwargs 设置为 CBV 的参数的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Django 管理员的 save() 覆盖中将站点添加到对象似乎不起作用?

在 Django 中,为啥我的表单上下文变量消失了?

django 包含标签 kwargs 错误说“函数需要 2 个参数”

如何在 Django F 表达式中将日期和时间字段合并到 DateTime 字段中

Django Crispy 表单根据需要设置模型字段

Django管理界面中的只读模型?