Django的ListView超详细用法(含分页paginate)


Posted in Python onMay 21, 2020

开发环境:

  • python 3.6
  • django 1.11

场景一

经常有从数据库中获取一批数据,然后在前端以列表的形式展现,比如:获取到所有的用户,然后在用户列表页面展示。

解决方案

常规写法是,我们通过Django的ORM查询到所有的数据,然后展示出来,代码如下:

def user_list(request):
  """返回UserProfile中所有的用户"""
  users = UserProfile.objects.all()
  return render(request, 'talks/users_list.html', context={"user_list": users})

这样能够解决问题,但是Django针对这种常用场景,提供了一个更快速便捷的方式,那就是ListView,用法如下:

from django.views.generic import ListView

class UsersView(ListView):

  model = UserProfile
  template_name = 'talks/users_list.html'
  context_object_name = 'user_list'

这样我们就完成了上边功能,代码很简洁。

场景二:

我想要对数据做过滤,ListView怎么实现?代码如下:

from django.views.generic import ListView

class UsersView(ListView):

  model = UserProfile
  template_name = 'talks/users_list.html'
  context_object_name = 'user_list'
  
  def get_queryset(self): # 重写get_queryset方法
  # 获取所有is_deleted为False的用户,并且以时间倒序返回数据
  return UserProfile.objects.filter(is_deleted=False).order_by('-create_time')

如果你要对数据做更多维度的过滤,比如:既要用户是某部门的,还只要获取到性别是男的,这时候,可以使用Django提供的Q函数来实现。

场景三

我想要返回给Template的数据需要多个,不仅仅是user_list,可能还有其他数据,如获取当前登陆用户的详细信息,这时怎么操作?,代码如下:

from django.views.generic import ListView

class UsersView(ListView):

  model = UserProfile
  template_name = 'talks/users_list.html'
  context_object_name = 'user_list'

  def get_context_data(self, **kwargs):  # 重写get_context_data方法
    # 很关键,必须把原方法的结果拿到
    context = super().get_context_data(**kwargs)
    username = self.request.GET.get('user', None)
    context['user'] = UserProfile.objects.get(username=username
    return context

这样,你返回给Template页面时,context包含为{'user_list': user_list, 'user': user}。

场景四

我想要限制接口的请求方式,比如限制只能GET访问,代码如下:

from django.views.generic import ListView

class UsersView(ListView):

  model = UserProfile
  template_name = 'talks/users_list.html'
  context_object_name = 'user_list'
  http_method_names = ['GET'] # 加上这一行,告知允许那种请求方式

场景五

我卡卡卡的返回了所有的数据给前端页面,前页面最好得分页展示呀,这怎么搞?

到此这篇关于Django的ListView超详细用法(含分页paginate)的文章就介绍到这了,更多相关Django的ListView用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python程序设计入门(5)类的使用简介
Jun 16 Python
python查询mysql中文乱码问题
Nov 09 Python
理解Python中的绝对路径和相对路径
Aug 30 Python
python基于twisted框架编写简单聊天室
Jan 02 Python
使用Python微信库itchat获得好友和群组已撤回的消息
Jun 24 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
对python dataframe逻辑取值的方法详解
Jan 30 Python
python实现人机猜拳小游戏
Feb 03 Python
python 生成任意形状的凸包图代码
Apr 16 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
如何以Winsows Service方式运行JupyterLab
Aug 30 Python
python在linux环境下安装skimage的示例代码
Oct 14 Python
Django中FilePathField字段的用法
May 21 #Python
Django 解决上传文件时,request.FILES为空的问题
May 20 #Python
使用 django orm 写 exists 条件过滤实例
May 20 #Python
django 解决自定义序列化返回处理数据为null的问题
May 20 #Python
python实现126邮箱发送邮件
May 20 #Python
python3.6使用SMTP协议发送邮件
May 20 #Python
Python操作Excel把数据分给sheet
May 20 #Python
You might like
修改destoon会员公司的伪静态中的com目录的方法
2014/08/21 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
js直接编辑当前cookie的脚本
2008/09/14 Javascript
Node.js实战 建立简单的Web服务器
2012/03/08 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
JavaScript实现在页面间传值的方法
2015/04/07 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
Angular.js之作用域scope'@','=','&'实例详解
2017/02/28 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
2017/07/11 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
vue.js 实现a标签href里添加参数
2019/11/12 Javascript
[54:54]Newbee vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python获取各操作系统硬件信息的方法
2015/06/03 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
详解Matplotlib绘图之属性设置
2019/08/23 Python
python实现广度优先搜索过程解析
2019/10/19 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
爱尔兰家电数码商城:Currys PC World爱尔兰
2016/07/23 全球购物
数据库方面面试题
2012/04/22 面试题
企事业单位求职者的自我评价
2013/12/28 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
社会工作专业自荐信
2014/09/26 职场文书
财政局个人总结
2015/03/04 职场文书
签证工作证明模板
2015/06/15 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏