2016-08-22 140 views
0

我正在處理在Django上創建一個模板,以顯示包含2個按鈕的項目列表。列表項目模板Django

我的窗體類是:

class AppsForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     policiesList = kwargs.pop('policiesList', None) 
     applicationList = kwargs.pop('applicationList', None) 
     EC2nodesList = kwargs.pop('amazonNodesList', None) 
     super(AppsForm, self).__init__(*args, **kwargs) 
     self.fields['appsPolicyId'] = forms.ChoiceField(label='Application Policy', choices=policiesList) 
     self.fields['appsId'] = forms.ChoiceField(label='Application', choices=applicationList) 
     self.fields['ec2Nodes'] = forms.ChoiceField(label='Amazon EC2 Nodes', choices=EC2nodesList) 

現在,我做的形式:

<form method="post" action="" class="form-inline" role="form"> 
     <div class="form-group"> 
      {% for field in form %} 
      { field.label }}: {{ field}} 
      {% endfor %} 
     </div> 
    {% csrf_token %} 
    <input type="submit" class="btn btn-default btn-success" name="deployButton" value="Deploy"/> 
    <input type="submit" class="btn btn-default btn-danger" name="undeployButton" value="Undeploy"/> 

而結果是:

Application Policy - Choicefield ; Application - Choicefield ; Amazon EC2 Nodes - Choicefield [Button Deploy] [Button Undeploy] 

而我尋找它是一種渲染方式窗體並顯示如下列表:

Application Policy - Choicefield ; Application - Choicefield [Button Deploy] [Button Undeploy] 
Amazon EC2 Nodes - Choicefield [Button Deploy] [Button Undeploy] 
<more items if I add them in forms.py...> 

我該如何獲得正確的渲染方式?

感謝和問候。

回答

1

你只需要改變一下代碼都是:

{% for field in form %} 
    { field.label }}: {{ field}} 
    <input type="submit" class="btn btn-default btn-success" name="deployButton" value="Deploy"/> 
    <input type="submit" class="btn btn-default btn-danger" name="undeployButton" value="Undeploy"/> 
    <br /> 
{% endfor %} 

因此,這將創建一個新的行每個都有自己的按鈕field.label和場變量。但有一點需要注意,如果您嘗試將ID分配給按鈕,它們必須有所不同,否則會出現錯誤。另外,對於這樣的代碼,提交可能有點奇怪,但它取決於應用程序的其餘部分。無論哪種方式,這將給你所需的格式。

+0

謝謝,是一個容易的變化。但正如你所說,我正在想另一種方式來做它,並做一個不太奇怪的代碼。 – Aker666