📜  基于 django 类的视图 ListView - Python (1)

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

基于 Django 类的视图 ListView

Django 是一个用于 Web 应用程序开发的高级 Python Web 框架。在 Django 中,类是它的视图处理程序的一个核心概念。ListView 是一种基于类的视图,让我们可以快速轻松地生成一个显示多个对象的列表页面。

什么是 ListView?

ListView 是一个基于 Django 中的 TemplateView 视图的扩展,它在模板中呈现一个对象列表。它支持分页、过滤和排序,并使用通用模板以避免编写重复的模板代码。

如何使用 ListView?

要使用 ListView,我们需要做以下几个步骤:

  1. 导入 ListView。
from django.views.generic import ListView
  1. 创建一个视图类并继承ListView。
class MyListView(ListView):
    template_name = 'my_list.html'
    context_object_name = 'my_list'
    model = MyModel

在这个例子中,我们创建了一个名为 MyListView 的视图类,它继承了 ListView 类。我们设置了 template_name 属性,它指定了我们渲染的模板文件的名称。我们还设置了 context_object_name 属性,它指定了我们将在模板中使用的变量名称。最后,我们设置了 model 属性,它指定了我们要显示的对象类型。

  1. 编写模板文件。
{% extends 'base.html' %}

{% block content %}
  <h1>My List</h1>
  <ul>
    {% for item in my_list %}
      <li>{{ item.name }}</li>
    {% endfor %}
  </ul>
{% endblock %}

在这个例子中,我们创建了一个基础模板,它扩展了一个名为 base.html 的模板文件。在 content 区块中,我们显示了一个 h1 标题和一个对象列表。

  1. 在 urls.py 中设置 URL 映射。
from django.urls import path
from .views import MyListView

urlpatterns = [
    path('my-list/', MyListView.as_view(), name='my_list'),
]

在这个例子中,我们创建了一个 URL 映射,将 URL 路径 '/my-list/' 映射到我们刚刚创建的 MyListView 视图类上。我们还将这个视图命名为 'my_list'。

ListView 的常用属性

除了在上面的代码示例中使用的属性之外,ListView 还有其他一些属性可以自定义。以下是一些常用的属性:

  • template_name:指定要使用的模板文件的名称。
  • context_object_name:指定将对象列表传递到模板时要使用的变量名称。
  • model:指定要在列表中显示的对象类型。
  • queryset:一个 Model.QuerySet 类型的对象,用于自定义获取对象列表的查询。
  • paginate_by:指定用于分页的每页对象数。
  • ordering:用于自定义对象列表的默认排序方式。
ListView 的常用方法

除了在上面的代码示例中使用的方法之外,ListView 还有其他一些方法可以自定义。以下是一些常用的方法:

  • get_queryset():用于生成对象列表的 QuerySet。
  • get_context_data():用于生成传递给模板的上下文数据。
结论

ListView 是一个强大而灵活的基于类的视图,可以帮助我们快速轻松地生成对象列表页面。它提供了许多自定义选项,使我们能够轻松地为我们的应用程序创建一个完美的列表页。