2011-02-04 19 views
0

嘿,我試圖刪除用戶選擇的事件,使用 複選框來檢查他們想要刪除哪些事件。但是對於 有一些原因,無論何時我調用request.POST.get('event_list')即使框被選中,我也沒有收到 ,最後我什麼都沒有。 這是我的模板和應刪除所選 事件的視圖。在我的Django模板中使用複選框表單時沒有POST響應

{% if event_list %} 
     {% for event in event_list%} 
       {%csrf_token%} 
       <input type="checkbox" name="event_list" 
id="event{{ forloop.counter }}" /> 
       <label for="event{{ forloop.counter }}">{{ event.title }}</ 
label><br /> 
     {% endfor %} 
     <input type = 'submit' value = 'delete checked'> 
     </form> 
     <p>{{removal}}<p/> {%comment%} this is what should be 
removed{%endcomment%} 
     {% if delete_error %} 
       <p>{{delete_error}}</p> 
      {% endif %} 

views.py

def EventDelete(request): 
     removal = request.POST.get('event_list') 
     if removal: 
       removal.delete() 
     else: 
       delete_error = "You didn't delete anything" 
     return redner_to_response("detail.html", {'delete_error': 
delete_error, 'removal': removal}, 
context_instance=RequestContext(request)) 

林不知道爲什麼去除沒有了什麼東西,應該不是有 在它的事件的標題?不幸的是,我不太瞭解html及其工作原理:(我真的很感謝幫助:)我覺得這是一個簡單的修復,我只是缺少一個小細節。謝謝:)

+1

redner_to_response應render_to_response – 2011-05-29 23:37:25

回答

0

該複選框沒有任何價值,所以你只是「發送」到服務器。

此:

<input type="checkbox" name="event_list" 
id="event{{ forloop.counter }}" /> 

應該讀

<input type="checkbox" name="event_list" 
id="event{{ forloop.counter }}" value="{{ forloop.counter }}" /> 

然後(一旦服務器收到ID的列表),你的處理代碼,它看起來錯誤,你需要以某種方式加載標識列表,並找出要刪除的內容。你可能想要像

removal = request.POST.get('event_list') 
for id in removal: 
    event = get_object_or_404(Event, pk=id) 
    event.delete() 

我認爲你有一個公平的學習!檢查firebug用於監視實際發送回服務器的內容。轉到w3schools to learn about forms,閱讀django文檔以處理刪除操作。

相關問題