我想使用模板和内容块生成一个页面。主页会生成一堆复选框来为某些特定值生成搜索查询。
<div id="searchbar">
{% for foo in bar %}
<input type="checkbox" name="foovar" value={{foo.name}}{%if foo.name in p %}checked=checked{%endif%}>{{foo.name}}<br>
{%endfor%}
<input type="submit" value="Submit">
</div>
<div id="searchresult">
{% block content %}
{% endblock %}
值 'bar' 是传递给包含所有特定值的模板的参数:
return render_to_response('testlink/foobar.html',{'bar':strings_from_database})
现在,在提交值后,它们被传递给我的视图,发生了一些神奇的事情,结果通过
return render(request,'extend/extend.html',{'result':result,'p':queried_values})
result 是结果,p 包含查询的值(在提交后保持复选框处于选中状态)。
{% extends "testlink/foobar.html" %}
{% block content %}
<b>results:</b> <br>
{% for result in result %}
{{result.someattribute}}<br>
{% endfor %}
{% endblock %}
现在,我的问题:复选框消失了,可能是因为再次执行了“for foo in bar”循环。有没有办法防止这种情况发生,而无需将复选框硬编码到我的模板中?这会起作用(我用几个复选框做到了,但是用太多的搜索值来做这件事并不好玩。我也想避免额外的数据库命中并再次传递参数。