为什么我的复选框在保存后没有被选中?
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' 但是当我按下保存并重新加载时,该框再次被取消选中。我在这里做错了什么?
如果没有看到正在运行的页面,很难确定,但我会尝试:
- 将您的 Django HTML 标记 if/else 条件更改为 'True' 而不是 'TRUE' 因为我相信 Python 它区分大小写。
- 确保您在 if/else 声明中以正确的方式结束。
我用 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' 但是当我按下保存并重新加载时,该框再次被取消选中。我在这里做错了什么?
如果没有看到正在运行的页面,很难确定,但我会尝试:
- 将您的 Django HTML 标记 if/else 条件更改为 'True' 而不是 'TRUE' 因为我相信 Python 它区分大小写。
- 确保您在 if/else 声明中以正确的方式结束。