我正在使用for
循环访问表中模型的所有记录。我在每一行都添加了一个按钮。当我单击该按钮删除特定行时,但当我刷新页面时,所有删除的行再次出现。但我不想再向他们展示。我怎样才能做到这一点?
<table class="table table-striped">
<thead>
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Check Out</th>
</tr>
</thead>
<tbody>
{%for s in student %}
<tr class="hiderow">
<td>{{ s.first_name }}</td>
<td>{{ s.last_name }}</td>
<td id="hidebtn"><div class="btn" role="group" aria-label="...">
<button type="button" class="btn btn-primary btn-sm" onclick="$(this).closest('tr').remove()">Check out Now</button>
</div></td>
{% endfor %}
</tbody>
</table>
答案 0 :(得分:0)
您必须向服务器发出AJAX请求,并实际将此条目从数据库中删除为永久性。
答案 1 :(得分:0)
为了找到适合您案例的解决方案,您必须了解为什么删除无法通过您的方法重新加载页面。您的onclick
JavaScript剪辑会修改DOM。服务器不知道发生了这种情况,浏览器会在刷新时抛出当前的DOM,并将从最新从服务器获取的HTML构建一个新的DOM。
用户的所有浏览器会话,甚至所有用户的按钮是否仍然隐藏?然后你需要一些服务器端状态。 (请参阅Domen's answer。)可能是另一个模型,它将按键所依据的模型的外键保存在其中。
按钮是否仅对当前会话保持隐藏状态,即对于已删除该按钮的浏览器标签?然后,您可以在不点击服务器的情况下通过,例如通过将状态保存在修改后的URL中。 (用#....
后缀对状态进行编码,并在页面刷新时从那里取回。)当然,对于这种情况,您仍然可以自由地在服务器端保持状态。您可能希望将其与某种会话表示相关联。 (不确定Django在这方面有什么。)