Python 当选中复选框时,如何在Django表单中显示可选字段?

Python 当选中复选框时,如何在Django表单中显示可选字段?,python,django,forms,Python,Django,Forms,Django是否可以不使用Javascript实现这一点?您的意思是选中复选框时显示可选字段?在没有Javascript的任何框架中,这几乎是不可能的。简单的选择是使用JS根据复选框的状态显示可选字段,或者使复选框实际发回以重新加载显示可选字段的表单的不同版本(使复选框以这种方式工作需要JS) 我想可能可以将一些东西与CSS结合起来,但JS实际上会更可靠,而且您可能仍然需要它来更改容器视图的选择器。使用一些CSS3技术在技术上是可行的,尽管不会有通用的浏览器支持 您的字段将有一个id,具体取决于

Django是否可以不使用Javascript实现这一点?

您的意思是选中复选框时显示可选字段?在没有Javascript的任何框架中,这几乎是不可能的。简单的选择是使用JS根据复选框的状态显示可选字段,或者使复选框实际发回以重新加载显示可选字段的表单的不同版本(使复选框以这种方式工作需要JS)


我想可能可以将一些东西与CSS结合起来,但JS实际上会更可靠,而且您可能仍然需要它来更改容器视图的选择器。

使用一些CSS3技术在技术上是可行的,尽管不会有通用的浏览器支持

您的字段将有一个id,具体取决于表单的前缀(“默认情况下为id,在创建表单时可配置”),因此您可以使用标识符#id#field#name在css中设置表单元素的样式。然后您可以使用一些来访问您的字段,如下所示:

#id_checkbox_field ~ #id_hidden_field {display: none; }
#id_checkbox_field[checked] ~ #id_hidden_field { display: block; }
当然,根据文档结构的不同,选择器也会有所不同。只有
id\u checkbox\u field
id\u hidden\u field
共享父项时,tilda才会起作用,但理论上您可以设置文档结构,以便使用CSS3完成此操作。如果您想要平滑的动画,它很简单,但不容易,也没有很好的支持

正如pjmorse所说,另一种方法是让他们选中该框,提交表单,然后让表单返回并显示新字段。如果你想帮我弄清楚的话,请告诉我,这是另外一罐虫子,我怀疑这是你要找的


大多数时候,当你想动态地做一些事情时,你需要使用javascript。

谢谢你的回答。提交表单不是一个选项。您确认我没有忽略Django选项。为了远离javascript,不是因为我害怕它,我将跳过复选框并显示一个可选字段。好主意。像Django这样的框架是用于服务器端代码的,一旦客户端获得页面,它就根本不会影响页面。Django只帮助您响应页面提交或异步javascript和xml(ajax)等请求。如果您希望在页面加载后发生任何事情,则需要使用javascript或等待CSS3获得更好的支持。:)