亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django - 如何區分要刪除的項目?

Django - 如何區分要刪除的項目?

jeck貓 2022-05-19 13:58:19
所以我有幾個項目(我稱之為筆記)保存在數據庫中并顯示在這樣的頁面中:https ://imgur.com/a/O90Qqsb我希望能夠編輯和刪除特定的筆記,但我很難知道如何告訴我的視圖我想刪除/編輯哪個我以前必須做類似的事情,但在我總是能夠更改我的網址之前,我只會通過那里傳遞 id,所以現在我留在同一個頁面上,我真的不知道該怎么做視圖.pydef delete_note(request, pk):note = get_object_or_404(Notes, id=pk)note.delete()return redirect('notes')模板    <div class="container">    <div>        <h1>Notes <button class="btn btn-primary" data-toggle="modal" data-target="#2modal" style="float: right; margin-left: 15px; color: white" type="button" name="button">New note</button> </h1>    </div>     {% for nt in note %}    <div class="card">        <div class="card-body">            <h5 class="card-title">                {{ nt.username }}            </h5>            <p class="card-text">                {{ nt.text }}            </p>            <b>                {{ nt.date }}            </b>            <div style="float: right">                <button class="btn btn-danger" data-toggle="modal" data-target="#myModal" style="float: right; margin-left: 15px; color: white" type="button" name="button"><i class="fa fa-trash"></i></button>            </div>        </div>    </div>         <!-- The Modal --><div class="modal" id="myModal">  <div class="modal-dialog">    <div class="modal-content">      <!-- Modal Header -->      <div class="modal-header">        <h4 class="modal-title">Warning!</h4>        <button type="button" class="close" data-dismiss="modal">&times;</button>      </div>      <!-- Modal body -->      <div class="modal-body">          <p><strong>You are about to delete this note </strong></p>          <p>Are you sure you want to delete it?</p>      </div>
查看完整描述

2 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

您永遠不應該根據 GET 請求刪除任何內容。所以不要做一個簡單的<a>標簽按鈕來導致你的筆記被刪除。您需要將刪除操作放在通過 POST 請求提交的表單中。


將您的模板更改為:


<form method="post" action="{% url 'delete_note' note.pk %}">

    {% csrf_token %}

    <input type="submit" class="btn btn-danger" name="delete">DELETE</input>

</form>

此外,您應該給每個模式一個不同的 id,現在當您單擊垃圾桶圖標時,目標是“#myModal”,但這始終是第一個,因為 id 必須是唯一的。將 forloop 計數器或 pk 添加到 id。


您的觀點是:


def delete_note(request, pk):

    if request.method == 'POST' and request.POST.get('delete'):

        note = get_object_or_404(Notes, pk=pk)

        note.delete()

        return redirect('notes')

    else:

        return HttpResponseNotAllowed(['DELETE'])

另請注意,更好地遵循 REST 指南的更好的 url 將是:


path('notes/<int:pk>/delete', delete_note, name="delete_note")

因為“/notes/”是筆記列表,“/notes/id”是特定筆記,“/notes/id/delete”是對特定筆記的刪除操作(在真正的 REST API 中,您不需要/delete 但只會DELETE向“/notes/id”發送 HTTP 請求,但這不能在僅支持的瀏覽器中完成POST)。


查看完整回答
反對 回復 2022-05-19
?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

您應該將注釋 id 作為表單中的另一個參數傳遞。您可以在 html 表單中使用隱藏的輸入,并使用 note.id 作為值。



查看完整回答
反對 回復 2022-05-19
  • 2 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號