为什么我的复选框在保存后没有被选中?

Why is my checkbox is unchecked after saving?

我用 Python (Django) 创建了一个复选按钮,如下所示:

在我的 views.py:

def list(response, list_id):
    ls = ToDoList.objects.get(id=list_id)
    if response.method == "POST":  # If we are POST-ing something (saving, adding items, etc..)
        print(response.POST)
        if response.POST.get("save"):  # SAVING CHECK-BUTTONS
            for item in ls.listitem_set.all():  # Loop through all items
                if response.POST.get("c" + str(item.id)) == "clicked":  # Check if it has been clicked or not
                    item.complete = True
                else:
                    item.complete = False
                item.save()
        elif response.POST.get("newItem"):  # ADDING ITEM TO LIST
            txt = response.POST.get("new")  # Get text-input by name
            if len(txt) > 2:  # Check for valid input
                ls.listitem_set.create(text=txt, complete=False)
            else:
                print("Invalid")
    return render(response, "myapp/list.html", {"ls": ls})

这是我的 list.html:

{% extends "myapp/base.html" %}
{% block title %}View List of Items{% endblock %}

{% block content %}
    <h1>{{ls.name}}</h1>
    <form method="POST" action="#">
        {% csrf_token %}
        <ul>
            {% for item in ls.listitem_set.all %}
                {% if item.complete == TRUE %}
                    <li><input type="checkbox" , value="clicked" , name="c{{item.id}}" checked>{{item.text}}</li>
                {% else %}
                    <li><input type="checkbox" , value="clicked" , name="c{{item.id}}">{{item.text}}</li>
                {% endif %}
            {% endfor %}
        </ul>
        <button type="submit" , name="save" , value="save">Save</button>  <!--Updates checked items -->
        <input type="text" , name="new">
        <button type="submit" , name="newItem" , value="newItem"> Add Item </button>  <!--Adds new items -->
    </form>
{% endblock %}

当我在浏览器中打开 127.0.0.1:8000/list/1 时,它会显示我的第一个列表,其中包含项目和相应的复选框。当我点击一个复选框时,它得到 'checked' 但是当我按下保存并重新加载时,该框再次被取消选中。我在这里做错了什么?

如果没有看到正在运行的页面,很难确定,但我会尝试:

  1. 将您的 Django HTML 标记 if/else 条件更改为 'True' 而不是 'TRUE' 因为我相信 Python 它区分大小写。
  2. 确保您在 if/else 声明中以正确的方式结束。