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构建自定义回调函数详解
Jun 20 Python
python 字典中取值的两种方法小结
Aug 02 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
Dec 05 Python
Python数据类型之Tuple元组实例详解
May 08 Python
pyqt5实现按钮添加背景图片以及背景图片的切换方法
Jun 13 Python
python创建属于自己的单词词库 便于背单词
Jul 30 Python
python实现把两个二维array叠加成三维array示例
Nov 29 Python
python文件和文件夹复制函数
Feb 07 Python
Python发送手机动态验证码代码实例
Feb 28 Python
Python实现井字棋小游戏
Mar 09 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 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
粗略计算在线时间,bug:ip相同
2006/12/09 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
javascript实现动态增加删除表格行(兼容IE/FF)
2007/04/02 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
jQuery简单实现提交数据出现loading进度条的方法
2016/03/29 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
bootstrap选项卡扩展功能详解
2017/06/14 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
150行代码带你实现微信小程序中的数据侦听
2019/05/17 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
[01:32]TI珍贵瞬间系列(一)
2020/08/26 DOTA
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
Python高斯消除矩阵
2019/01/02 Python
利用Python+阿里云实现DDNS动态域名解析的方法
2019/04/01 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
linux面试相关问题
2013/04/28 面试题
高中自我评价分享
2013/12/05 职场文书
总经理秘书工作职责
2013/12/26 职场文书
高一地理教学反思
2014/01/18 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
数控技术应用个人求职信范文
2014/02/03 职场文书
土建技术员岗位职责
2015/04/11 职场文书
在校生证明
2015/06/17 职场文书