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 相关文章推荐
仅用50行代码实现一个Python编写的计算器的教程
Apr 17 Python
Django框架中处理URLconf中特定的URL的方法
Jul 20 Python
Python使用PIL模块生成随机验证码
Nov 21 Python
Python实现比较扑克牌大小程序代码示例
Dec 06 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
Python实现微信小程序支付功能
Jul 25 Python
Python获取时间戳代码实例
Sep 24 Python
opencv python 图片读取与显示图片窗口未响应问题的解决
Apr 24 Python
Django使用Profile扩展User模块方式
May 14 Python
python tqdm实现进度条的示例代码
Nov 10 Python
python中@contextmanager实例用法
Feb 07 Python
分享python函数常见关键字
Apr 26 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编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
解析PHP对现有搜索引擎的调用
2013/06/25 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
javascript 函数使用说明
2010/04/07 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
javascript检查浏览器是否支持flash的实现代码
2014/08/14 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
Node.js readline 逐行读取、写入文件内容的示例
2018/03/01 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
一篇文章快速了解Python的GIL
2018/01/12 Python
Django model update的多种用法介绍
2020/03/28 Python
Python 爬虫实现增加播客访问量的方法实现
2019/10/31 Python
Python爬取梨视频的示例
2021/01/29 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
TripAdvisor西班牙官方网站:全球领先的旅游网站
2018/01/10 全球购物
工厂实习感言
2014/01/14 职场文书
企业军训感想
2014/02/07 职场文书
银行贷款承诺书
2014/03/29 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
白血病捐款倡议书
2014/05/14 职场文书
大学生学习计划书
2014/09/15 职场文书
市级三好学生评语
2014/12/29 职场文书
岳庙导游词
2015/02/04 职场文书
毕业生捐书活动倡议书
2015/04/27 职场文书
家长对学校的意见和建议
2015/06/03 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL