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 中整型对象的存储问题
May 16 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
python常用函数与用法示例
Jul 02 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
python多线程实现同时执行两个while循环的操作
May 02 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
Python Selenium实现无可视化界面过程解析
Aug 25 Python
python实现学生通讯录管理系统
Feb 25 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 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
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
Laravel 5 学习笔记
2015/03/06 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
在javaScript中关于submit和button的区别介绍
2013/10/20 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
js获取域名的方法
2015/01/27 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
JS实现的跨浏览器解析XML文件实例
2016/06/21 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
nodejs实现套接字服务功能详解
2018/06/21 NodeJs
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
js实现车辆管理系统
2020/08/26 Javascript
Openlayers学习之加载鹰眼控件
2020/09/28 Javascript
Python中bisect的用法
2014/09/23 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
python画图系列之个性化显示x轴区段文字的实例
2018/12/13 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
PYQT5实现控制台显示功能的方法
2019/06/25 Python
Python word文本自动化操作实现方法解析
2020/11/05 Python
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
公司行政经理岗位职责
2013/12/24 职场文书
公司接待方案
2014/03/08 职场文书
高中生毕业评语
2014/12/30 职场文书
英文导游词
2015/02/13 职场文书
大学生个人简历自荐信
2015/03/06 职场文书
小学班主任培训心得体会
2016/01/07 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
mybatis 获取更新记录的id
2022/05/20 Java/Android