问题出在这里:在我呈现的html页面中,我有多个我称之为'缩略图'文本数据又称Notes(注意是我在Django中的模型)。我决定绑定按钮"删除"每个缩略图:用户点击"删除"在某些注意事项上 - >它被删除了。 我(在我的views.py中)得到了什么:
ids=[x.id for x in Note.objects.all()]
buttons = []
for x in ids:
buttons.append('DeleteButton' + str(x))
if (request.GET.get(x for x in buttons)):
print("Button click registered @ ", x)
嗯,它实际上并没有记录任何按钮点击,因此没有打印"点击已注册"。我的按钮在notes.html中显示如下:
<input type="submit" class="btn btn-default" value= "DeleteButton" name="DeleteButton{{ Note.id }}">
任何想法如何实际注册点击的任何按钮?提前谢谢!
答案 0 :(得分:2)
request.GET.get(x for x in buttons)
根本不做您的想法。它尝试获取单个参数,包括所有按钮名称的列表。这永远不会奏效。
但无论如何,这是一种非常低效的做事方式。而不是遍历每个ID并查看它是否在GET中,您应该只在GET中找到 的内容并提取其ID。类似的东西:
button_ids = []
for item in request.GET:
if item.startswith('DeleteButton'):
button_ids.append(item.replace('DeleteButton', ''))
notes = Note.objects.filter(id__in=button_ids)
更好的方法是使用实际的button
标记而不是input
,这样您就可以将值与按钮中显示的值分开。然后,您可以使用具有不同值的单个name
。
<button name="DeleteButton" value="{{ note.id }}">
Delete
</button>
现在你可以做到:
button_ids = request.GET.getlist('DeleteButton')
(请注意,8之前的IE版本有按钮元素的各种错误,所以如果你需要支持这些,这不是一个好主意。)