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 相关文章推荐
Python重新引入被覆盖的自带function
Jul 16 Python
python进阶教程之循环相关函数range、enumerate、zip
Aug 30 Python
详解python发送各类邮件的主要方法
Dec 22 Python
python数字图像处理之高级滤波代码详解
Nov 23 Python
python 读取文本文件的行数据,文件.splitlines()的方法
Jul 12 Python
python调用百度地图WEB服务API获取地点对应坐标值
Jan 16 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
Pandas之排序函数sort_values()的实现
Jul 09 Python
Python 中list ,set,dict的大规模查找效率对比详解
Oct 11 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
python中加背景音乐如何操作
Jul 19 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
建立文件交换功能的脚本(二)
2006/10/09 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
2020/08/03 PHP
广告代码静态化js通用函数
2007/05/09 Javascript
js每次Title显示不同的名言
2008/09/25 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
JavaScript设计模式之观察者模式(发布者-订阅者模式)
2014/09/24 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
改变vue请求过来的数据中的某一项值的方法(详解)
2018/03/08 Javascript
vue2.x集成百度UEditor富文本编辑器的方法
2018/09/21 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
复制粘贴功能的Python程序
2008/04/04 Python
Python处理中文标点符号大集合
2018/05/14 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
解决c++调用python中文乱码问题
2020/07/29 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
高中生学习的自我评价
2013/12/14 职场文书
医学生职业规划范文
2014/01/05 职场文书
高中考试作弊检讨书
2014/01/14 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
庆七一活动总结
2014/08/27 职场文书
金陵十三钗观后感
2015/06/04 职场文书
表彰大会新闻稿
2015/07/17 职场文书