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实现汉诺塔方法汇总
Jul 25 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
python批量解压zip文件的方法
Aug 20 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
Mar 19 Python
浅谈Python线程的同步互斥与死锁
Mar 22 Python
基于Python中random.sample()的替代方案
May 23 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 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中鲜为人知的10个函数
2014/02/28 PHP
十大使用PHP框架的理由
2015/09/26 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
javascript学习网址备忘
2007/05/29 Javascript
jquery复选框全选/取消示例
2013/12/30 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
JS实现的仿QQ空间图片弹出效果代码
2016/02/23 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
微信小程序之购物车功能
2020/09/23 Javascript
Vuex提升学习篇
2018/01/11 Javascript
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
[46:49]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.19
2020/12/24 DOTA
python使用心得之获得github代码库列表
2014/06/25 Python
Python画图学习入门教程
2016/07/01 Python
python基础梳理(一)(推荐)
2019/04/06 Python
python urllib爬虫模块使用解析
2019/09/05 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
深入分析python 排序
2020/08/24 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
pandas按条件筛选数据的实现
2021/02/20 Python
客运企业隐患排查工作方案
2014/06/06 职场文书
2014年结对帮扶工作总结
2014/12/17 职场文书
个人政治思想总结
2015/03/05 职场文书
运动员加油词
2015/07/18 职场文书
赞助商致辞
2015/07/30 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
java版 简单三子棋游戏
2022/05/04 Java/Android
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript