1

我有以下场景:

  • 用户加载home.html,选择五个复选框中的一个子集,然后单击提交。
  • 用户登陆stats.html,这将显示与所选复选框相关的值,并将特定复选框标记为 CHECKED。

我将一个名为“itemsToCheck”的变量传递给stats.html模板,其中包含以下内容:

[(u'8', u'on'), (u'7', u'on')]

这些值应该可以帮助我选择这样的特定复选框:

<input type="checkbox" checked="yes" name="{{ MyModel.id }}"/>

你将如何实现这一点(使用模板语法,比如checked={% something %}jQuery 或者可能是 jQuery)?

我是 Django/web 开发初学者,所以如果我的方法完全错误以及是否有更清洁/更优雅的解决方案,请告诉我。

4

1 回答 1

1

如果您传递 a dict 而不是列表,这将起作用:

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 %}
于 2012-06-13T12:28:29.677 回答