📜  ListView – 基于类的视图 Django(1)

📅  最后修改于: 2023-12-03 14:44:01.213000             🧑  作者: Mango

ListView – 基于类的视图 Django

在Django中,ListView是基于类的视图之一,用于渲染一个对象列表。这个视图允许您指定一个模型来渲染它的对象列表,而不必编写任何额外的查询代码。

如何使用它

要使用ListView,需要将其导入视图模块中,例如:

from django.views.generic import ListView

然后您只需要按照以下方式配置您的视图:

class MyListView(ListView):
    model = MyModel
    template_name = 'my_template.html'
    context_object_name = 'my_objects'
  • model:要渲染对象的模型
  • template_name:呈现的模板名称或路径
  • context_object_name:对象列表将用于在视图中引用。如果未指定,将使用默认值 "object_list"
示例

下面是一个简单的示例,将显示所有“Book”模型的所有实例:

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

class BookListView(ListView):
    model = Book
    template_name = 'book_list.html'
    context_object_name = 'books'

在上面的代码中,我们从myapp.models中导入"Book"模型。然后,ListView将使用这个模型来渲染它的所有对象,并在"template_name"中定义的模板中显示它们。最后,我们定义了"context_object_name",即"books",这将在模板中使用。

接下来,在您的模板中,您可以像这样显示实例:

{% for book in books %}
    <p>{{ book.title }}</p>
{% endfor %}

以下是完整的book_list.html模板示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Book List</title>
</head>
<body>
    <h1>All Books:</h1>
    
    {% for book in books %}
        <p>{{ book.title }} - {{ book.author }}</p>
    {% empty %}
        <p>No books available</p>
    {% endfor %}
</body>
</html>
总结

ListView是一种强大的基于类的视图,可以让您快速渲染模型的对象列表,没有任何额外的查询代码。通过完全掌握ListView,您可以创建优美且高效的Django应用程序。