【问题标题】:Django template - set checkbox checked if object.val == trueDjango模板 - 如果object.val == true,则设置复选框
【发布时间】:2018-12-21 13:36:57
【问题描述】:

我是初级后端开发人员。我不知道怎么用JS。

我无法设置

<input type="checkbox" name="player_check"> 

真的... 或反向我无法设置

<input type="checkbox" name="player_check" checked>

假的。

我的代码:

<table id="some_table">
    <thead>
    <tr>
        <th>Prepared</th>
    </tr>
    </thead>
    <tbody>
    {% for player in players %}
        <tr>
            <td>
                <input type="checkbox" name="player_check">
            </td>
        </tr>
    {% endfor %}
    </tbody>
</table>

假设在“玩家”中我有 5 个玩家,每个玩家都有一个值“player_check”。

其中两个有:

player.player_check = True

休息:

player.player_check = False

我正在尝试使用 {{}} 或 {% %}

在表格中使用这些值启动复选框

我试过了:

<input type="checkbox" name="player_check" value=1>
<input type="checkbox" name="player_check" value="1">
<input type="checkbox" name="player_check" value="True">
<input type="checkbox" name="player_check" value=True>
<input type="checkbox" name="player_check" value="checked">

没有任何效果... 然后我发现复选框有一个参数被选中:

<input type="checkbox" name="player_check" checked> 

没关系,但是...现在我无法关闭它:

<input type="checkbox" name="player_check" checked="false">
<input type="checkbox" name="player_check" checked="0">
<input type="checkbox" name="player_check" checked=0>
<input type="checkbox" name="player_check" checked="unchecked">

所以我决定在 python 代码中使用 django 模板 + 更改: 现在 player.player_check 等于选中或未选中

还是不行!现在我不能把 {{ }} 没有像 "something"={{ foo }}

这样的名字

现在我有 0 个想法,我可以做些什么来让它发挥作用……也许是 JS?但我不敢相信仅在 django/python 中没有正确的方法。 ;/

【问题讨论】:

  • 您不使用 Django 表单的原因是什么,它会为您解决这个问题?
  • 这是我公司的旧项目,它是这样制作的。我负责这个项目,主要是我在后端 API 中学习和做员工,但有时需要在前端制作一些东西,现在它有点让我丧命:P,再过几周,我希望那种容易不会出现问题感谢您的回答;)

标签: javascript python django checkbox django-templates


【解决方案1】:

您可以使用例如{% if ... %} 标签来做到这一点:

{% for player in players %}
<tr>
  <td>
  <input type="checkbox" name="player_check"{% if player.player_check %} checked{% endif %}>
  </td>
</tr>
{% endfor %}

但我认为你最好使用 Django 表单,它会以更优雅的方式为你处理这个问题:你指定表单字段,其余的由 Django 处理。

【讨论】:

  • 谢谢!在您回答之前几分钟,我发现了如何执行此操作,但是您的建议要好得多,我使用了 if 语句,其中一个复选框关闭,否则我为第二个复选框编写了代码。现在我必须改变它;)谢谢你的回答!
  • @AdrianKurzeja:那也可以:) 但它的可扩展性较差。如果您稍后将其他属性添加到 &lt;input&gt; 标记,则意味着您需要指定两次(甚至更多次)。
猜你喜欢
  • 2019-08-19
  • 2016-06-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 2018-08-16
  • 2022-11-24
  • 1970-01-01
相关资源
最近更新 更多