关于Django的widget设计原则

About Django's widget design principles

这是我很久以前就有的一个问题,因为我只是不明白为什么会做出这样的决定。

当我们渲染一个小部件时(例如,'因为使用表单),它的渲染函数有一个 name arg。为什么,如果 HTML 标签名称是一个属性,不能指定为传递给该函数的 attrs 字典的一部分?仅当您未指定属性名称时才使用 name 应该更有意义。

为了便于理解,如果我设置一个属性 {"name": "no_one_knows[]"},当我渲染小部件时它的名称应该是 "no_one_knows[]",而不是 arg 传递的名称。这样我就可以有一个 HTML 标记,可以在服务器端(例如)直接解析为列表(getlist(..))。

如果没有字段,小部件就没有意义。该字段负责接受输入并验证它;所以它是必须确定名称属性的字段,否则它无法知道在数据中使用什么值。

但是您永远不需要通过调用其 render 方法直接呈现小部件。同样,这是该领域的工作。