2014-11-03 40 views
0

我是Django和web開發新手。Django模板不張貼複選框數據

我有一個簡單的模板,它在表格中有一些帶有複選框的表單,而外部的表格則是一個提交按鈕,但都是相同的形式。

<form action="{% url 'delLogin' %}" method="POST">{% csrf_token %} 
    <table class="table table-striped table-hover"> 
    <thead> 
    <tr><th>Total: {{ object_list.count }}</th><th></th><th></th><th></th></tr> 
     <tr><th>Login</th><th>Customer</th></th><th></th></tr> 
    </thead> 
     <tbody> 

     {% for obj in object_list %} 
      <tr> 
      <td> <a href="{% url 'DetailLogin' obj.id_login %}"> {{ obj.id_login }}</a></td> 
      <td> <a href="{% url 'DetailCust' obj.customer %}"> {{ obj.customer }} </a></td>  
      <td> 
       <input type="checkbox" name="{{ obj.id_login }}" value="{{ obj.id_login }}"/> 
      </td> 
      </tr> 
     {% endfor %} 
     </tbody> 

    </table> 
    <input type="submit" value="Delete selected"> 
    </form> 
</div> 

這應該張貼數據,以另一種觀點認爲:

def deleteObjects(request): 
template = 'Gestione/delObj.html' 
objects = [] 
for obj, value in request.POST.items(): 
    objects.append(value) 
context = {'objects' : objects} 
return render(request, template, context) 

呈現給這個模板:

<form action="" method="post">{% csrf_token %} 
{% if objects %} 
{% for object in objects %} 
    <p>Are you sure you want to delete "{{ object }}"?</p> 
{% endfor %} 
{% endif %} 
    <input type="submit" value="Confirm" /> 
</form> 

加載頁面時沒有錯誤,但「對象」不顯示我不知道爲什麼。

感謝您的幫助提前

回答

0

我認爲request.POST.items()沒有返回你認爲它的迴歸。你應該提出一個ValueError或者什麼來看看它返回的結果,然後你可以修改你的for-loop來適當的解析它。

0

你想找的是動態的形式:

自己的表單類:

from django import forms 

class DeleteForm(forms.Form): 
    def __init__(self, own_param, *args, **kwargs): 
     super(DeleteForm, self).__init__(*args, **kwargs) 
     self.fields['field'] = own_param 
+0

謝謝,但我認爲這是不可能繼續像你描述。問題是我有一個表中的對象列表,每一行都有一個複選框來發送數據,所以傳遞給表單的對象數量是可變的。 – Alessio 2014-11-04 13:24:06

+0

編輯我的答案。 – Persijn 2014-11-05 09:41:20

-1

「的頁面加載沒有錯誤,但‘對象’不顯示...」 此行引起了我的注意 問題在於您試圖將複選框的名稱和值分配給對象列表變量。

<input type="checkbox" name="{{ obj.id_login }}" value="{{ obj.id_login }}"/> 

,而不是寫:

<input type="checkbox" {{ obj.id_login }}/>