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实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
Jan 29 Python
python抓取文件夹的所有文件
Feb 27 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
Mar 05 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
pandas表连接 索引上的合并方法
Jun 08 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
对python 中class与变量的使用方法详解
Jun 26 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
Feb 29 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
python实现将中文日期转换为数字日期
Jul 14 Python
PyTorch预训练Bert模型的示例
Nov 17 Python
Django-simple-captcha验证码包使用方法详解
Nov 28 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性能优化注意点
2016/01/04 PHP
php的命名空间与自动加载实现方法
2019/08/25 PHP
javascript引用对象的方法
2007/01/11 Javascript
很酷的javascript loading效果代码
2008/06/18 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
在Vue中使用Viser说明(基于AntV-G2可视化引擎)
2020/10/28 Javascript
对numpy中数组元素的统一赋值实例
2018/04/04 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
2019/04/29 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
python支持多继承吗
2020/06/19 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
2018/01/10 HTML / CSS
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
iHerb俄罗斯:维生素、补品和天然产品
2020/07/09 全球购物
研讨会主持词
2014/04/02 职场文书
服务理念标语
2014/06/18 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
工作态度检讨书范文
2015/05/06 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
MySql分区类型及创建分区的方法
2022/04/13 MySQL
MySQL 字符集 character
2022/05/04 MySQL