2011-02-04 3 views
0

Привет, я пытаюсь удалить события, выбранные пользователем с помощью , чтобы проверить, какие события они хотят удалить. Но для почему-то всякий раз, когда я вызываю request.POST.get ('event_list') Ничего нет, получил даже если флажки отмечены, и я ничего не получаю. Вот мой шаблон и представление, которое должно удалять выбранные события .Отсутствие ответа POST при использовании формы флажка в шаблоне Django

{% 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 –

ответ

0

Эти флажки не имеют значения, поэтому вы просто получите «on», отправленный на сервер.

Это:

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

следует читать

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

А потом (после того, как сервер получил список идентификаторов), ваш код для обработки он выглядит не так, вам нужно как-то загрузят список идентификаторов и выработать, что удалить. Вероятно, вы хотите что-то вроде

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 для обработки удаления.

Смежные вопросы