ListView (带分页)

1.带分页效果的基础模板

1) view

from django.views.generic.list import ListViewfrom employ.models import Companyclass CompanyListView(ListView):model = Companycontext_object_name = "companies"template_name = 'company/company_list.html'paginate_by = 20

2) url

from django.conf.urls import url
from . import viewsurlpatterns = [url(r'^$', views.CompanyListView.as_view(), name='company-list'),]

3) template

<table class="table table-striped"><thead><tr><th>名称</th><th>规模</th></tr></thead><tbody>{% for company in companies %}<tr><td>{{ company.name }}</td><td>{{ company.scale }}</td></tr>{% endfor %}</tbody>
</table>{% if is_paginated %}
<div class="pagination center-block"><span>共{{ page_obj.paginator.num_pages }}页</span><span id="paging" class="step-links" style="display: block;text-align: center">{% if page_obj.has_previous %}<span><a href="?page={{ page_obj.previous_page_number }}">上一页</a></span>{% endif %}<span class="active">{{ page_obj.number }}</span>{% if page_obj.has_next %}<span><a href="?page={{ page_obj.next_page_number }}">下一页</a></span>{% endif %}</span>
</div>
{% endif %}

2.model < queryset < get_queryset()

这时候,页面上显示是model里的所有对象。如果我们希望这个object list排序后呈现呢?或者想要筛选部分呈现?这些又在哪定义呢?

很简单,这时候只要定义queryset或者重写get_queryset()方法就能搞定。

注意:model、queryset、get_queryset()至少要定义一个。而当三个都定义的时候,get_queryset()的效果强于queryset,而queryset的效果又强于model。

2.1 定义queryset

from django.views.generic.list import ListViewfrom employ.models import Companyclass CompanyListView(ListView):context_object_name = "companies"template_name = 'company/company_list.html'paginate_by = 20queryset = Company.objects.all().order_by('-scale')   

2.2 重写get_queryset()

from django.views.generic.list import ListViewfrom employ.models import Companyclass CompanyListView(ListView):context_object_name = "companies"template_name = 'company/company_list.html'paginate_by = 20def get_queryset(self):companies = Company.objects.all().order_by('-scale')return companies

3.向template传递额外信息

以上,我们只向template中传递了关于某个Model里的所有对象。那么,我们有什么方法传递更多信息呢?

方法一:重写get_context_data()。如我想传递当前时间显示在template中:

view:

from django.views.generic.list import ListViewfrom employ.models import Companyfrom datetime import datetimeclass CompanyListView(ListView):context_object_name = "companies"template_name = 'company/company_list.html'paginate_by = 20queryset = Company.objects.all().order_by('-open_positions')def get_context_data(self, **kwargs):context = super(CompanyListView, self).get_context_data(**kwargs)context['now'] = datetime.now()return context

template:

{{ now }}

方法二:在view中定义some_method()方法返回数据,在模版中使用{{ view.some_method }}。

注意:some_method(self)方法只能有一个self参数。

view:

from django.views.generic.list import ListViewfrom employ.models import Companyfrom datetime import datetimeclass CompanyListView(ListView):context_object_name = "companies"template_name = 'company/company_list.html'paginate_by = 20queryset = Company.objects.all().order_by('-open_positions')def now(self):return datetime.now()

template:

{{ view.now }}

转载于:https://www.cnblogs.com/rinka/p/django_generic_view_ListView.html

django generic view - ListView相关推荐

  1. Django通用视图ListView、DetailView、BaseListView使用方法

    DetailView django.views.generic.detail.DetailView 在执行此视图时,self.object将包含该视图所操作的对象. 该视图从以下视图继承方法和属性: ...

  2. Django的View(视图)

    Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...

  3. django批量修改table_python中Django视图(view)的详解(附示例)

    本篇文章给大家带来的内容是关于python中Django视图(view)的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一个视图函数(类),简称视图,是一个简单的Py ...

  4. Django @csrf_exempt不适用于基于通用视图的类(Django @csrf_exempt does not work on generic view based class)...

    class ChromeLoginView(View):def get(self, request):return JsonResponse({'status': request.user.is_au ...

  5. Django中类视图ListView和DetailView的使用

    我们在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑.最终的目的都是一样的. 比如博客,通常其首页都是文章列表以及siderbar里的文章分类.推荐阅读.标签等等. 对处理首 ...

  6. 在 Django 的 View 中利用 function decorator 可实现一定程度的代码重用

    在 Django 中,假设有几个 view, 他们都接受类似的参数,做类似的处理,最后又输出类似的变量到模板中配合显示,唯一不同的就是模板路径. 最普通的写法可能是这样: def view_a(req ...

  7. 今天想到了关于 Django 中 view 的组织方式问题

    之前一直做 ASP.NET, 对于一个页面文件一个 view 的做法感觉很好.而 django 中在一个文件里很多个函数,每一个代表一个 view. 这样的做法在网站程序复杂化后,查找代码很不方便.当 ...

  8. Python自动化运维:Django之View视图和Template

    views详解 http请求中产生两个核心对象: http请求:HttpRequest对象 http响应:HttpResponse对象 (1) HttpRequest对象 当请求一个页面时,Djang ...

  9. Django Model View Template 之间的简单交互 (二)

    前言 接续前文,上一篇文章主要涉及了 Django 项目的基础配置等,这篇主要涉及数据库相关的 ORM ,也就是 Django 中的 Model 的使用,MVT 三层之间的交互 教程基本都是东拼西凑的 ...

  10. android自定义空的view,ListView android中的自定义空视图

    如果ListView适配器中没有数据,我想显示刷新Button和TextView.我还希望能够向将重新加载列表的按钮添加单击侦听器.以下是我定义当前活动的方式: protected void onCr ...

最新文章

  1. 政务数据放开在即 政策红利下大数据投资亮点凸显
  2. 【转载】SAP集成会计凭证生成的原理
  3. Funnel-Transformer:让Transformer更高效地处理长序列
  4. Blazor 组件库开发指南
  5. 关于页面之间局部显示的几种方式
  6. windows加载linux分区,如何实现在linux系统启动时就加载windows分区(ntfs分区)
  7. 10分钟开始使用ICTCLAS Java版
  8. 如何阅读科研文献-------------一点思考与总结
  9. Android去掉EditText控件周圍橙色高亮區域【属性文件位置】
  10. zoj3987—Numbers(贪心)
  11. 食品的特征和鸿蒙,白粥养胃吗?知道这4种食物才是养胃高手
  12. 15天深度复习JavaWeb的详细笔记(七)——Request、Response
  13. 如何构建超现实元宇宙空间
  14. c#窗体程序未响应问题
  15. 小草酒店客房管理系统 免费
  16. 零基础如何快速学习Java?Java基础入门秘诀
  17. c语言RLC算法,「百科」1分钟了解RC、RL、RLC电路原理
  18. word添加水印后多出一条线的删除方法
  19. Self -Supervised Learning
  20. 如何通过组策略控制远程主机空闲时间自动断开并注销

热门文章

  1. DynDNS免费动态域名解析
  2. python电影名称词云_Python爬取最近上映的电影评论并生成词云——误杀
  3. Python爬虫案例:大批量抓取堆糖网图片
  4. 关于killer网卡与win10 擦出火花 内存爆炸的原因
  5. python画爱心树_Python在情人节画棵爱心树/爱情树
  6. 2019美研计算机录取,2019美研录取更新 | 春节OFFER大集锦,没有比OFFER更好的新年礼物了!...
  7. usaco 1.1 greedy gift givers
  8. 史上最详细的PID教程——理解PID原理及优化算法
  9. 虚拟内存设置在其他盘引发的问题(待解决)
  10. WINDOWS虚拟内存设置