django ListView的使用 ListView中获取url中的参数值方式


Posted in Python onMarch 27, 2020

view.py

from django.views.generic import ListView,DetailView
from xxxx.models import Model_Name
class Colortag_view(ListView):
 #context_object_name = '如果不指定的话在html页面中 可以使用object_list获取' 
 context_object_name = 'object_list'
 #template_name='html页面所在目录'
 template_name='caradmin/colortags/colortags.html'
 #自定义查询方法
 def get_queryset(self):
  #获取url 中的值 比如http://127.0.0.1/admin/colortags/?name_text=红色
  print(self.request.GET.dict())
  return Model_Name.objects.filter(**self.request.GET.dict())

urls.py

from . import views
urlpatterns = [
 path('colortags/', views.Colortag_view.as_view(), name = 'modelname_list'),
]

补充知识:Django分类查询和关键字查询以及查询后的分页

思路:分类和关键字查询分为以下几种情况:

1、只按照分类查询

2、值按照关键字查询

3、分类和关键字一起查询

第一种情况,值按照分类查询:

我们写了一个select下拉菜单来进行选择分类,当我们选中某一个分类时,则跳转到相应的分类的商品的展示页面。

<!-- 点击类别跳转到则展示相应的分类 -->
 $("#p_type").change(function(){
 var type = $(this).val()
 location.href = '/backweb/good_list/?type='+type
 })

通过原生js通过onchange给select的option标签绑定事件,jQ中使用change对select进行事件绑定,通过$(this)拿到当前点击的标签。

将获取到分类值做为?后的参数传入视图中,在视图中先将数据通过传递的分类进行筛选,再将筛选后的数据传递到页面进行渲染。

如果我们此时还做了分页展示,则将后端处理数据时的分类值也传到页面,在我们点击分页时跳转的地址?后将分类值作为参数再次传递回后端进行处理。

第二种情况,只按照关键字查询:

和分类查询类似,将文本输入标签(例如text类型的input)绑定事件,获取到输入的值,将获取的值作为地址?后的参入传递到后端。在后端通过地址后的参数将数据进行模糊(constatins)筛选,再将筛选后的商品和参数传递回前端,将数据在前端进行展示

当我们点击分页时,将查询值作为参数传递回后端。

第三种情况,同时按照分类和关键字进行查询:

此时我们需要在地址?后传递两个参数,一个是分类一个是关键字,然后在后端接收参数并进行筛选

<!-- 关键字查询 -->
function select_goods(){
 var context=$('#context').val()
 var type = $('.select').val()
 
 if (context){
  location.href = '/backweb/good_list/?type='+type+'&context='+context
 }else{
  location.href = '/backweb/good_list/?type='+type
 }
 
 
}

分页跳转地址代码

<a href="{% url 'backweb:good_list' %}?type={{ type_id }}&context={{ context }}&page=1" rel="external nofollow" >第一页</a>

views代码

def good_list(request):
 if request.method == 'GET':
  page_num = int(request.GET.get('page', 1))
  type = request.GET.get('type',0)
  context = request.GET.get('context','')
  # 如果拿不到分类则将type_id设置为0
  if not type:
   type_id = int(type)
  else:
   type_id = int(type)
  # 所有的分类
  type_list = FoodType.objects.all()
  # 根据相应的分类查找相应的商品
  # 如果type_id不为0则获取相应分类的商品
  if not type_id:
   goods = Goods.objects.all()
  else:
   goods = Goods.objects.filter(goods_type_id=type_id)
 
  # 如果有搜索条件则按照搜索条件模糊查询
  if context:
   goods = Goods.objects.filter(goods_type_id=type_id,productname__contains=context)
   if not goods:
    goods = Goods.objects.filter(goods_type_id=type_id,productname__contains=context[-1])

以上这篇django ListView的使用 ListView中获取url中的参数值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3实现的腾讯微博自动发帖小工具
Nov 11 Python
python中常用检测字符串相关函数汇总
Apr 15 Python
Python实用日期时间处理方法汇总
May 09 Python
python 写的一个爬虫程序源码
Feb 28 Python
Python抓取框架 Scrapy的架构
Aug 12 Python
对python3 一组数值的归一化处理方法详解
Jul 11 Python
python 不同方式读取文件速度不同的实例
Nov 09 Python
Python后台管理员管理前台会员信息的讲解
Jan 28 Python
python3.6+selenium实现操作Frame中的页面元素
Jul 16 Python
python按修改时间顺序排列文件的实例代码
Jul 25 Python
PyQt5 如何让界面和逻辑分离的方法
Mar 24 Python
Python抖音快手代码舞(字符舞)的实现方法
Feb 07 Python
django列表筛选功能的实现代码
Mar 27 #Python
python实现猜数游戏
Mar 27 #Python
手把手教你安装Windows版本的Tensorflow
Mar 26 #Python
python pandas.DataFrame.loc函数使用详解
Mar 26 #Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 #Python
Python函数默认参数常见问题及解决方案
Mar 26 #Python
Python内建序列通用操作6种实现方法
Mar 26 #Python
You might like
使用PHP强制下载PDF文件示例
2014/01/17 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
2015/12/17 PHP
php版微信公众账号第三方管理工具开发简明教程
2016/09/23 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
vue实现仿淘宝结账页面实例代码
2017/11/08 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
[01:56]2014DOTA2西雅图邀请赛 MVP外卡赛老队长精辟点评
2014/07/09 DOTA
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
python 高效去重复 支持GB级别大文件的示例代码
2018/11/08 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Python中关于logging模块的学习笔记
2020/06/03 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
CSS3中31种选择器使用方法教程
2013/12/05 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
荷兰浴室和卫浴网上商店:Badkamerxxl.nl
2020/10/06 全球购物
C++如何引用一个已经定义过的全局变量
2014/08/25 面试题
调解员先进事迹材料
2014/02/07 职场文书
高级销售求职信
2014/02/21 职场文书
创业培训计划书
2014/05/03 职场文书
活动总结报告怎么写
2014/07/03 职场文书
写给父母的感谢信
2015/01/22 职场文书
会议邀请函
2015/01/30 职场文书
培训班通知
2015/04/25 职场文书
2016反腐倡廉警示教育心得体会
2016/01/13 职场文书
各种货币符号快捷输入
2022/02/17 杂记