2011-07-15 104 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的代碼給我正是我需要做的!真的,再次感謝! –