1 回答

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