1 回答

TA貢獻1900條經驗 獲得超5個贊
有兩種方法可以解決此類問題,通過在 Django 視圖中跟蹤發布的數據,或者使用 ajax 將數據發送到視圖,防止每次發送帖子時重新加載 html 頁面和表單。
1. 跟蹤發布的數據:
在您看來,您應該通過獲取復選框的選中值列表來獲取已發布數據中的復選框狀態,然后將它們作為上下文數據返回。這取決于您的回復的組織方式,但為了簡單起見,我們假設您使用TemplateResponse:
return TemplateResponse(request, 'your.html',{'checked_hms':request.POST.getlist('hm')})
與在 html 中相比,您應該使用條件來檢查值是否存在checked_hms并基于checked向復選框輸入添加值,如下所示:
...
<input type="checkbox" class="form-control" id="one" name="hm" value="one" {% if 'one' in checked_hms %}checked{% endif %} onchange="triggerPost()">
<label for="one">One</label>
<br>
<input type="checkbox" class="form-control" id="two" name="hm" value="two" {% if 'two' in checked_hms %}checked{% endif %} onchange="triggerPost()">
<label for="two">Two</label>
...
2.使用ajax:
您可以使用 ajax 調用以 post 形式發送表單數據,這不會重新加載表單,從而保持復選框狀態完整,如下所示:
<script>
function triggerPost() {
$.ajax({
type: "POST",
url: $('#hostform').attr('action'),
data: $('#hostform').serialize()
});
};
</script>
添加回答
舉報