Django 基於函式的檢視 CRUD (建立、讀取、更新、刪除)
CRUD 是建立、讀取、更新和刪除函式的縮寫。在 Django 中,我們可以對我們建立到資料庫中的資料執行所有這些 CRUD 操作。現在讓我們根據我們想要執行的操作建立views.py函式。
使用 Django 進行建立操作
建立用於建立或向資料庫表新增新資料條目。
在下面的程式碼片段中,我們首先匯入模型表單和相應的模型。接下來,我們繼續檢查請求是否是 POST 請求。如果是 POST 請求,我們使用來自請求的資料建立一個新的表單例項,對其進行驗證並儲存資料,然後將使用者重定向到主頁。
另一方面,如果請求不是 POST 請求,我們可以簡單地建立一個新的表單例項並在上下文中呈現它。
from django.shortcuts import render, redirect from .forms import MyModelForm from .models import MyModel def create_view(request): if request.method == 'POST': form = MyModelForm(request.POST) if form.is_valid(): form.save() return redirect('appname:home') else: form = MyModelForm() context = {'form': form} return render(request, 'appname/create.html', context)
使用 Django 進行讀取操作
讀取用於檢索、讀取、搜尋或檢視組中現有資料條目或特定資料條目。在views.py中,我們匯入模型和 get_object_or_404 函式,如果物件不存在,該函式會引發 404 錯誤。我們使用作為引數傳遞給檢視的主鍵檢索物件。然後,我們在上下文中呈現該物件。
from django.shortcuts import render, get_object_or_404 from .models import MyModel def detail_view(request, pk): mymodel = get_object_or_404(MyModel, pk=pk) context = {'mymodel': mymodel} return render(request, ''app_name /detail.html', context)
使用 Django 進行更新操作
這用於編輯或更新之前輸入到資料庫表中的資料。在 views.py 檔案中,我們使用其主鍵檢索物件,然後檢查請求是否是 POST 請求。如果是,我們使用來自請求的資料和我們檢索到的模型例項建立一個新的表單例項。
如果表單有效,我們儲存它並將使用者重定向到物件的詳細資訊檢視。如果不是 POST 請求,我們使用我們檢索到的模型例項建立一個新的表單例項並在上下文中呈現它。
from django.shortcuts import render, get_object_or_404, redirect from .forms import MyModelForm from .models import MyModel def update_view(request, pk): mymodel = get_object_or_404(MyModel, pk=pk) if request.method == 'POST': form = MyModelForm(request.POST, instance=mymodel) if form.is_valid(): form.save() return redirect(''app_name:detail', pk=pk) else: form = MyModelForm(instance=mymodel) context = {'form': form} return render(request, 'app_name/update.html', context)
使用 Django 進行刪除操作
刪除用於刪除、移除或停用資料庫表中的現有條目。在這個例子中,我們匯入模型表單和模型本身。我們匯入模型本身並使用其主鍵檢索物件,然後我們檢查請求是否是 POST 請求。如果是,我們刪除物件並將使用者重定向到主頁。如果不是 POST 請求,我們只需在上下文中呈現該物件。
from django.shortcuts import render, get_object_or_404, redirect from .models import MyModel def delete_view(request, pk): mymodel = get_object_or_404(MyModel, pk=pk) if request.method == 'POST': mymodel.delete() return redirect('myapp:home') context = {'mymodel': mymodel} return render(request, 'myapp/delete.html', context)
廣告