嘿那里,我正在尝试删除用户选择的事件 复选框以检查他们想要删除哪些事件。但对于 每当我调用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及其工作原理:(我真的很感激帮助:)我觉得这是一个简单的修复,我只是错过了一个小细节。谢谢:))
答案 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文档以处理删除。