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)

更新于:2023年11月6日

546 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告