在我的Django模板中使用复选框表单时没有POST响应

时间:2011-02-04 00:46:55

标签: html forms checkbox django-templates

嘿那里,我正在尝试删除用户选择的事件 复选框以检查他们想要删除哪些事件。但对于 每当我调用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 :(得分: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列表),你处理它的代码看起来就错了,你需要以某种方式加载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文档以处理删除。