我有以下情况:
home.html
,选择五个复选框的子集,然后点击提交。stats.html
,会显示与所选复选框相关的值,并将特定复选框标记为已检查。我将一个名为'itemsToCheck'的变量与以下内容一起传递给stats.html
模板:
[(u'8', u'on'), (u'7', u'on')]
这些值应该帮助我选择这样的特定复选框:
<input type="checkbox" checked="yes" name="{{ MyModel.id }}"/>
你将如何实现(使用checked={% something %}
或jQuery等模板语法?)
我是Django / web开发初学者,所以如果我的方法完全错误并且有更清洁/更优雅的解决方案,请告诉我。
答案 0 :(得分:1)
如果你传递一个字典而不是列表,这将有效:
itemsToCheck = {7: 'on', 8: 'on'}
<input type="checkbox" {% if MyModel.id in itemsToCheck.keys %}checked="checked"{% endif %} name="{{ MyModel.id }}"/>
对于描述的列表:
[(8, 'on'), (9, 'on')]
你将不得不做更多的处理。
编辑: 或者在dict键是字符串的情况下:
{% if MyModel.id|stringformat:"s" in itemsToCheck.keys %}
或者只是以一种格式准备itemsToCheck以跳过转换......
编辑2: 实际上,我在这里使用了一个标签:
@register.inclusion_tag('checkbox.html')
def my_checkboxes(request, items):
return {"items": [{'id': i.id, 'checked': request.POST[str(i.id)] == 'on'} for i in items]}
然后在checkbox.html:
{% for i in items %}
<input type="checkbox" {% if i.checked %}checked="checked"{% endif %} name="{{ i.id }}"/>
{% endfor %}