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 相关文章推荐
将pip源更换到国内镜像的详细步骤
Apr 07 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
python找出列表中大于某个阈值的数据段示例
Nov 24 Python
python线程池如何使用
May 28 Python
Python能做什么
Jun 02 Python
Python轻量级web框架bottle使用方法解析
Jun 13 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
如何利用python生成MD5并去重
Dec 07 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
Python实战之实现康威生命游戏
Apr 26 Python
pyqt5蒙版遮罩mask,setmask的使用
Jun 11 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
人工智能开始玩《星际争霸2》 你的操作跟得上吗?
2017/08/11 星际争霸
Laravel 5 框架入门(三)
2015/04/09 PHP
PHP类与对象后期静态绑定操作实例详解
2018/12/20 PHP
js计数器代码
2006/11/04 Javascript
基于jQuery的弹出消息插件 DivAlert之旅(一)
2010/04/01 Javascript
JS 文件大小判断的实现代码
2010/04/07 Javascript
DOM2非标准但却支持很好的几个属性小结
2012/01/21 Javascript
js自定义事件及事件交互原理概述(一)
2013/02/01 Javascript
浅谈javascript的Array.prototype.slice.call
2015/08/31 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
微信小程序商品详情页规格属性选择示例代码
2017/10/30 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
2021/03/01 Vue.js
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
python开发之文件操作用法实例
2015/11/13 Python
django的登录注册系统的示例代码
2018/05/14 Python
python调用并链接MATLAB脚本详解
2019/07/05 Python
Pandas的Apply函数具体使用
2020/07/21 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
技术总监岗位职责
2013/12/05 职场文书
信息技术专业个人自我评价
2013/12/11 职场文书
水污染治理工程专业求职信
2014/06/14 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
2015大学生实训报告
2014/11/05 职场文书
优秀大学生自荐信
2015/03/26 职场文书
房地产公司财务总监岗位职责
2015/04/03 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
工作态度不好检讨书
2015/05/06 职场文书
大学生入党群众意见书
2015/06/02 职场文书
干部外出学习心得体会
2016/01/18 职场文书
Python制作春联的示例代码
2022/01/22 Python