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调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
Aug 15 Python
使用python调用zxing库生成二维码图片详解
Jan 10 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
python 调用c语言函数的方法
Sep 29 Python
python3实现磁盘空间监控
Jun 21 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
转换科学计数法的数值字符串为decimal类型的方法
Jul 16 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
selenium处理元素定位点击无效问题
Jun 12 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
Jul 07 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
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
PHP中文编码小技巧
2014/12/25 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
PHP实现下载远程图片保存到本地的方法
2017/06/19 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
2014/11/08 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
通过实例了解js函数中参数的传递
2019/06/15 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
如何在JavaScript中正确处理变量
2020/12/25 Javascript
整理Python中的赋值运算符
2015/05/13 Python
简述Python中的进程、线程、协程
2016/03/18 Python
Python算法应用实战之栈详解
2017/02/04 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
python实现dijkstra最短路由算法
2019/01/17 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
Interhome丹麦:在线预订度假屋和公寓
2019/07/18 全球购物
最新党员思想汇报
2014/01/01 职场文书
市场部规章制度
2014/01/24 职场文书
廉洁家庭事迹材料
2014/05/15 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
优秀员工评优方案
2014/06/13 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
2014年租房协议书范本
2014/10/30 职场文书
人为什么会“幸灾乐祸”?
2019/08/06 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers