Django的ListView超详细用法(含分页paginate)
1、概述
在Django中,我们常常需要将数据库中的数据显示在网页上,此时便需要使用视图(View)和模板(Template)。其中View负责处理数据,Template负责表示数据;视图函数临时处理并生成一个模板,而类视图则能更好地组织代码。其中ListView是Django的类视图之一,常用于展示数据库中的多条数据。
2、ListView和DetailView的区别
DetailView用于展示单一对象的数据,例如展示某个学生的个人信息,而ListView则用于展示多条数据,例如展示某个班级的所有学生的信息;另外,ListView还能够实现数据分页的功能。
3、ListView的使用方法
ListView需要继承于一个模型类,即该模型类中的所有数据都可以展示出来。具体操作如下:
1)在views.py中导入ListView:
from django.views.generic.list import ListView
2)编写类视图:
class StudentListView(ListView):
model = Student
template_name = 'student_list.html'
context_object_name = 'students'
paginate_by = 5
- model:指定使用的模型类。
- template_name:指定使用的模板,即模板文件的名称。
- context_object_name:指定在模板中使用的变量名称,例如students。
- paginate_by:指定每页的数据量。如果不需要分页则不必使用。
4、模板的使用方法
ListView使用的模板需要继承一个基础模板,然后在其中使用该模型类中的数据。具体操作如下:
1)在模板的第一行使用模板继承:
{% extends 'base.html' %}
2)编写模板:
学生列表
{% for student in students %}
{{ student.name }} - {{ student.age }}
{% endfor %}
3)使用模板标签来实现分页:
{% if is_paginated %}
{% if page_obj.has_previous %}
{% endif %}
第 {{ page_obj.number }} 页,共 {{ page_obj.paginator.num_pages }} 页。
{% if page_obj.has_next %}
{% endif %}
{% endif %}
以上是ListView的使用方法,可以很方便地获取模型类的数据并展示在网页上,而分页功能则能让数据更加易于展示。