2011-07-15 101 views
2

基本问题:我需要为我的Django的形式真正的自定义模板。而已。我习惯根据django的输出来设计表单的样式。这一次不同的是,HTML/CSS模板已经完成了(我被聘为个月前),我不能修改它,所以我需要Django的输出正是HTML代码。Django的:表格和自定义模板

我读了很多通过django文档,我发现了很多,但我不得不承认,我不能把零散的东西,订单,做我需要做的事情。现在

,与CheckboxSelectMultiple HTML输出是这样的:

<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> 

等等其他表单小部件的类型。这是我能想到用他们给我的特定布局创建我的表格的唯一方法。

实际上,我被困在此,我似乎无法能够把一切togheter开始编码我的形式。 如何管理呢?如果你有任何的例子,它会很棒!否则,只需指向我的方向正确的方向,请......悲伤地看着文档,正如我之前所说,实际上并没有帮助我

谢谢所有提前!

+0

我也可以使用包含标签来生成html(并使用自定义代码而不是django的表单填充它)但我无法弄清楚如何将该html绑定到django表单类,以保留所有功能(错误校验ECC) –

回答

2

你应该继承的CheckboxSelectMultiple类和重写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 

对于如何让你的新方法的灵感查看原文CheckboxSelectMultiple来源。

之后,你的信号压倒一切在你的表格

class MyCustomForm(forms.Form): 
    formfield_overrides = { 
     models.CheckboxSelectMultiple : {'widget': CustomCheckboxSelectMultiple } 
    } 

现在所有的MyCustomForm将使用您的特定部件在所有CheckboxSelectMultiple。

+0

让我试试吧,现在的感谢! –

+0

感谢,浏览checkboxselectmultiple的代码给我正是我需要做的!真的,再次感谢! –