ListView类视图
1、在网站开发中,经常会出现需要列出某个表中的一些数据作为列表展示出来.比如文章列表,图书列表等等。在Django中可以使用ListView类视图来帮我们快速实现这种需求
2、即:如果需要在模板中以列表的形式展示一些数据,那么就可以使用ListView类视图来快速实现
3、ListView类视图跟前面介绍的View类视图和TemplateView类视图一样,都是为了方便我们快速实现某些特定功能的类视图
⑴这些类视图jango已经封装好了的,我们只需要继承对应的类以及重写某些属性和方法就可以了
例1:
⑴编辑视图
⑵编辑模板
⑶查看数据库数据
⑷访问第一页
⑸访问第二页
注:
1、上面例子中我们只是很简单的写了一个类视图,并继承于ListView类视图,就很容易的实现了一个列表显示页面
⑴在从数据库获取数据时,我们并没有使用SQL语句进行查询,只是提供了一个模型名,但成功的从对应表中查询出了数据
⑵在数据显示方面,我们只是定义了一个URL,但是可以通过查询字符串的方式来访问第二页的数据
⑶可以看出:有很多东西都是Django封装好了的,我们只需要按照我们的需要来传入对应的属性(方法)值就可以了
⑷模板在ListView类视图中是没有封装的,这个是完全需要我们自己来写的:相当于就是Django已经给你封装好了数据分页的视图了,我们要做的就是定义好传递给模板的参数以及模板
2、上面例子只是一个很简单的ListView类视图,主要是先熟悉下这个类视图里面有哪些东西
3、这个例子中:翻页功能我们是通过手动在地址栏中输入URL实现的。实际中应该是有个翻页按钮之类的,通过这个翻页按钮来向后端传递这个查询字符串参数值的
4、这个例子中:数据库中一共有四条数据,每页显示2条,那么总共有2页。我们如果让page=3的话,就会找不到页面。如果我们在网址后面没有传递page参数,默认返回的就是第一页。
ListView类视图属性、方法
属性、方法名 | 描述 |
model | 重写model类属性,指定这个列表是给哪个模型的 |
template_name | 指定这个列表的模板 |
paginate_by | 指定这个列表一页中展示多少条数据 |
context_object_name | 指定这个列表模型在模板中的参数名称(传递到模板的参数名:键名) |
ordering | 指定这个列表的排序方式 |
page_kwarg | 获取第几页的数据的参数名称。默认是page |
get_context_data | 获取上下文的数据 |
get_queryset | 根据需要来查询数据,默认是全部数据(all方法) |
page_kwarg属性
1、page_kwarg属性值用来来修改查询字符串参数的参数名
2、这些属性可以理解为Python中的类属性:整个类公用的属性
例2:修改URL中页数参数名
⑴编辑视图
⑵访问第一页