渲染以响应django中的几个文本框

时间:2013-02-05 09:17:41

标签: django forms

几个小时后,我仍然没有想出在这种情况下如何做/思考,我认为在开始时这将是最简单的任务..

有一个html模板,有七个文本框,每天一个。文本框的名称是当天的名称。我在其中写下文字,然后按提交。

Django获取它,并将所有内容放入数据库中。一切都很好。

当我再次加载模板时,我希望文本框中填充数据库中的数据。但我不知道怎么做,我需要帮助!

我做的第一个是进行查询并执行render_to_response,但随后我将每个字段渲染七次,因为它在每个文本框中呈现查询中的所有内容。

如果我的html模板中只有一个文本框,则render_to_response可以正常工作。但是,当我随后更改模板中的任何数据并按提交时,所有文本框都具有相同的名称,因此django无法将所有七天分开。

{% for activity in activity_data %}     
        Activity  <input type="text" class="textbox" value="{{activity.excercise}}" name="monday" size="12" id="inputField1">  <p>&nbsp;</p>
{% endfor %} 

我不知道这有多清楚,如果不让我知道,我会尝试解释更多。欢迎任何建议!

2 个答案:

答案 0 :(得分:0)

这很难看,但你可以使用{%cycle%}标记来迭代一天的名字。

{% for activity in activity_data %}     

 {% cycle 'monday' 'tuesday' 'wednesday' 'thursday' 'friday' 'saturday' 'sunday' as day  silent %}
  Activity  <input type="text" class="textbox" value="{{activity.excercise}}" 
                name="{{day}}" size="12" id="inputField1">  <p>&nbsp;</p>
{% endfor %}

更好的方法是,name的值来自activity对象,这样您就不必操纵for循环,并且可以执行某些操作name="{{activity.day}}"

答案 1 :(得分:0)

谢谢!我解决了这个问题,建议您使用ID而不是实际的日期名称来填充db的名称。效果很好。