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提取具有某种特定字符串的行数据方法
Dec 11 Python
Python读取Pickle文件信息并计算与当前时间间隔的方法分析
Jan 30 Python
关于python字符串方法分类详解
Aug 20 Python
python 比较2张图片的相似度的方法示例
Dec 18 Python
Python urlopen()和urlretrieve()用法解析
Jan 07 Python
Python3 元组tuple入门基础
Feb 09 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
Python使用requests模块爬取百度翻译
Aug 25 Python
Sentry错误日志监控使用方法解析
Nov 12 Python
python安装sklearn模块的方法详解
Nov 28 Python
Python Django模型详解
Oct 05 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 23 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
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
ThinkPHP之N方法实例详解
2014/06/20 PHP
总结PHP中DateTime的常用方法
2016/08/11 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
js实现弹窗效果
2020/08/09 Javascript
vue实现图片裁剪后上传
2020/12/16 Vue.js
python解析模块(ConfigParser)使用方法
2013/12/10 Python
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
浅析Python中signal包的使用
2015/11/13 Python
利用python批量给云主机配置安全组的方法教程
2017/06/21 Python
python计算auc指标实例
2017/07/13 Python
Python轻量级ORM框架Peewee访问sqlite数据库的方法详解
2017/07/20 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
详解pytorch 0.4.0迁移指南
2019/06/16 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
如何完美的建立一个python项目
2020/10/09 Python
python 列表推导和生成器表达式的使用
2021/02/01 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
学校四风问题对照检查材料思想汇报
2014/09/26 职场文书
学籍证明模板
2014/11/21 职场文书
品质保证书格式
2015/02/28 职场文书
检讨书怎么写?
2019/06/21 职场文书
Vue实现动态查询规则生成组件
2021/05/27 Vue.js
MySQL REVOKE实现删除用户权限
2021/06/18 MySQL
Python面向对象之内置函数相关知识总结
2021/06/24 Python