【发布时间】:2013-03-26 11:52:39
【问题描述】:
我想使用模板和内容块生成页面。主页会生成一堆复选框来为某些特定值生成搜索查询。
<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”循环。有没有办法防止这种情况发生,而无需将复选框硬编码到我的模板中?这会起作用(我用几个复选框来做到这一点,但是用太多的搜索值来做这件事并不好玩。我也想避免额外的数据库命中并再次传递参数。
【问题讨论】:
-
你在用 django
Form? -
不,所有 html 都是在单独的 .html 文件中完成的。
-
你为什么不使用
Form?这将使输出模板中的字段变得非常简单,因为这是它的设计目的。 -
先按自己的方式做肯定无济于事。最好的办法是尝试 django 的方式,如果它不适合你,就按照你的方式去做。最终你会回来看看 django 可以做什么,也许会找到更好的方法来做事。至于sql... Django 的ORM 非常强大,实际上只需要很少的sql。将来您可能需要进行原始查询,但是如果您使用的是 Django,则应该利用它的功能...
-
如果您还没有,您应该通过tutorial 真正地工作,它涵盖了很多主题,可以让您很好地开始。
标签: python html django django-templates checkbox