Нет ответа POST при использовании формы флажка в моем шаблоне Django - PullRequest
0 голосов
/ 04 февраля 2011

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

 {% 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 Ответ

0 голосов
/ 30 мая 2011

Флажки не имеют значения, поэтому вы просто отправляете сообщение на сервер.

Это:

<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, чтобы узнать о формах , и прочитайте документацию django для обработки удаления.

...