📜  基于类的通用视图 Django(创建、检索、更新、删除)(1)

📅  最后修改于: 2023-12-03 15:08:07.973000             🧑  作者: Mango

基于类的通用视图 Django(创建、检索、更新、删除)

在 Django 中,可以使用视图来处理使用者通过 HTTP 请求发送过来的数据。Django 提供了基于函数的视图和基于类的视图。在本文中,我们将着重探讨基于类的视图,特别是基于类的通用视图,其中包含了创建、检索、更新和删除操作。

创建视图

CreateView 是用于创建新对象的视图。使用 CreateView 可以很方便地创建表单,并将数据存储到数据库中。在以下示例中,我们将创建一个用于创建新的 Book 对象的视图。

from django.views.generic.edit import CreateView
from .models import Book

class BookCreateView(CreateView):
    model = Book
    fields = ['title', 'author', 'publisher']

在创建视图中,我们必须指定模型对象,以及要显示给用户的表单字段。这里我们通过 fields 属性指定要显示给用户的字段。

检索视图

用于检索对象的视图是 ListView。使用 ListView 可以很容易地查找数据库中的对象,并将它们显示给用户。在以下示例中,我们将创建一个要显示所有 Book 对象的视图。

from django.views.generic import ListView
from .models import Book

class BookListView(ListView):
    model = Book
    context_object_name = 'books'

在检索视图中,我们必须指定模型对象,以及将结果传递给模板时使用的上下文对象名称。这里我们通过 context_object_name 属性将结果传递给名为 'books' 的上下文对象。

更新视图

用于更新对象的视图是 UpdateView。使用 UpdateView 可以很容易地更新数据库中的对象,并将它们保存到数据库中。在以下示例中,我们将创建一个用于更新 Book 对象的视图。

from django.views.generic.edit import UpdateView
from .models import Book

class BookUpdateView(UpdateView):
    model = Book
    fields = ['title', 'author', 'publisher']

在更新视图中,我们必须指定模型对象,以及要显示给用户的表单字段。这里我们通过 fields 属性指定要显示给用户的字段。

删除视图

用于删除对象的视图是 DeleteView。使用 DeleteView 可以很容易地从数据库中删除对象。在以下示例中,我们将创建一个用于删除 Book 对象的视图。

from django.views.generic.edit import DeleteView
from django.urls import reverse_lazy
from .models import Book

class BookDeleteView(DeleteView):
    model = Book
    success_url = reverse_lazy('book_list')

在删除视图中,我们必须指定模型对象以及成功删除对象后要返回的 URL。这里我们通过 success_url 属性指定将成功删除对象后返回到名为 'book_list' 的 URL。

结论

基于类的通用视图是 Django 提供的一种方便的方法,可以轻松地执行 CRUD 操作。使用通用视图,开发者可以大大减少编写代码的工作量,提高开发效率。在使用基于类的通用视图时,需要特别注意选择使用哪种视图,并根据需求进行配置。