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脚本
Apr 05 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
利用Python实现简单的相似图片搜索的教程
Apr 23 Python
Python标准库之Sys模块使用详解
May 23 Python
python开发之基于thread线程搜索本地文件的方法
Nov 11 Python
Python实现拷贝多个文件到同一目录的方法
Sep 19 Python
python3实现基于用户的协同过滤
May 31 Python
python与C、C++混编的四种方式(小结)
Jul 15 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
Python操作dict时避免出现KeyError的几种解决方法
Sep 20 Python
详解MindSpore自定义模型损失函数
Jun 30 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中chdir()函数用法实例
2014/11/13 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
JavaScript实现简单图片滚动附源码下载
2014/06/17 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
总结Python编程中三条常用的技巧
2015/05/11 Python
python的Tqdm模块的使用
2018/01/10 Python
Python使用Pickle库实现读写序列操作示例
2018/06/15 Python
对python中类的继承与方法重写介绍
2019/01/20 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
python两种获取剪贴板内容的方法
2020/11/06 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
Python绘制数码晶体管日期
2021/02/19 Python
敏捷开发的主要原则都有哪些
2015/04/26 面试题
钳工实习自我鉴定
2013/09/19 职场文书
前台文员岗位职责
2013/12/28 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
2014年妇幼保健工作总结
2014/12/08 职场文书
党小组鉴定意见
2015/06/02 职场文书
村主任当选感言
2015/08/01 职场文书