Django中的ListView视图分析

首先当然是搞清楚ListView的继承关系。

ListView(MultipleObjectTemplateResponseMixin,BaseListView)

MultipleObjectTemplateResponseMixin(TemplateResponseMixin)

BaseListView(MultipleObjectMixin,View)

MultipleObjectMixin(ContextMixin)

假设我模型是Person(models.Model),现在要在查看所有的记录。我的自定义列表视图是Persons(ListView).

好的,先从在浏览器中输入一个URL开始,该地址经Django转换成对自定义视图类Persons.as_view的调用,结果就是得到类View里的函数view。在这里,开始请求的旅程。因为我们的请求方式是“GET”,函数view里部就会调用View.dispatch(),然后是BaseListView.get(),它的作用,一是调用get_queryset()取得查询的QuerySet,所以自定义列表视图中可以重载get_queryset这个方法,自定义你的QuerySet,比如加入一些过滤条件等等。再一个是调用get_context_data()函数,填入额外的内容,所以你可以重载该方法,但别忘记调用基类的get_context_data,其他你想保存的数据,当然是以字典形式,比如你想保存日期,查询条件等等。其实,你可以将这些数据保存到实例字段extra_context这个变量里,Django的机制就自动将数据保存起来,这样在视图内就能使用了。剩下的内容就是用视图渲染了。怎么都可以,看你的前端,我用Bootstrap。

你可能感兴趣的:(Django中的ListView视图分析)