Django:表单和自定义模板
基本问题:我需要为django表单创建真正的定制模板。就这样。我习惯于根据django的输出为表单设置样式。这次不同了,html/css模板已经完成了(在我被录用前几个月),我无法修改它,所以我需要django准确地输出html代码 我通过django docs读了很多书,发现了很多,但我必须承认,我不能按顺序把零碎的东西放在一起去做我需要做的事情 现在,使用复选框SelectMultiple,html输出如下:Django:表单和自定义模板,django,django-templates,django-forms,Django,Django Templates,Django Forms,基本问题:我需要为django表单创建真正的定制模板。就这样。我习惯于根据django的输出为表单设置样式。这次不同了,html/css模板已经完成了(在我被录用前几个月),我无法修改它,所以我需要django准确地输出html代码 我通过django docs读了很多书,发现了很多,但我必须承认,我不能按顺序把零碎的东西放在一起去做我需要做的事情 现在,使用复选框SelectMultiple,html输出如下: <ul> <li><input type='c
<ul>
<li><input type='checkbox' ...></li>
...
</ul>
...
我实际上需要做的是创建类似CustomCheckboxSelectMultiple的东西,以便准确地输出此模板:
<ul class="list">
<li class="list-item"><input class="checkbox" type="checkbox" id="..." /><label class="label" for="">...</label></li>
...
</ul>
...
等等,用于其他类型的表单小部件。这是我能想到的用他们给我的特殊布局创建表单的唯一方法
事实上,我被困在这个问题上了,我似乎不能把所有的东西都放在一起,开始编写我的表单。
我该怎么办?如果你也有任何例子,那就太好了!否则,请告诉我正确的方向。。。可悲的是,正如我之前所说的,查看文档并没有真正帮助我
提前谢谢大家 您应该将复选框SelectMultiple类子类化,并覆盖render方法,如中所示:
class CustomCheckboxSelectMultiple (CheckboxSelectMultiple):
"""
A custom CheckboxSelectMultiple Widget that render specific html
"""
def __init__(self, attrs={}):
super(CustomCheckboxSelectMultiple, self).__init__(attrs)
def render(self, name, value, attrs=None):
#Here the custom code
有关如何制作新方法的灵感,请参阅原始复选框SelectMultiple source
在那之后,你的信号将以你的形式覆盖
class MyCustomForm(forms.Form):
formfield_overrides = {
models.CheckboxSelectMultiple : {'widget': CustomCheckboxSelectMultiple }
}
现在,您所有的MyCustomForm都将使用特定的小部件来处理其中的所有复选框SelectMultiple。我还认为我可以使用包含标记来生成html(并用自定义代码而不是django的表单填充它),但我不知道如何将html绑定到django表单类,以保留所有功能(错误,验证ecc)谢谢,浏览checkboxselectmultiple的代码让我明白了我需要做什么!真的,再次感谢!