【问题标题】:render to response to several textboxes in django渲染以响应 django 中的几个文本框
【发布时间】:2013-02-05 09:17:41
【问题描述】:

几个小时后,我仍然不知道在这种情况下该怎么做/思考,我一开始认为这将是最简单的任务..

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

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

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

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

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

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

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

【问题讨论】:

  • 你使用 django ModelForm 吗?如果是,请指定实例参数

标签: django forms


【解决方案1】:

这很难看,但您可以使用 {%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}}"

【讨论】:

    【解决方案2】:

    谢谢!我解决了它作为您的建议,用 ID 而不是当天的真实姓名填充 db 中的名称。效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-25
      • 2021-02-17
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2015-06-23
      • 2021-03-24
      • 1970-01-01
      相关资源
      最近更新 更多