在我的 Django 模板中使用复选框表单时没有 POST 响应
Posted
技术标签:
【中文标题】在我的 Django 模板中使用复选框表单时没有 POST 响应【英文标题】:No POST response when using checkbox form in my Django template 【发布时间】:2011-06-21 01:51:04 【问题描述】:您好,我正在尝试删除用户选择的事件 复选框以检查要删除的事件。但对于 每当我打电话 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 及其工作原理知之甚少 :( 我非常感谢您的帮助 :) 我觉得这是一个简单的修复,我只是错过了一个小细节。谢谢:)
【问题讨论】:
redner_to_response 应该是 render_to_response 【参考方案1】:复选框没有任何价值,因此您只会“打开”发送到服务器。
这个:
<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 文档以处理删除。
【讨论】:
以上是关于在我的 Django 模板中使用复选框表单时没有 POST 响应的主要内容,如果未能解决你的问题,请参考以下文章
如何在Django的视图功能中访问Django模板中表单中的复选框[关闭]
在 Symfony 4.4 中覆盖复选框表单字段产生重复标签且没有字段