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分割文件的常用方法
Nov 01 Python
用python实现面向对像的ASP程序实例
Nov 10 Python
Python抽象类的新写法
Jun 18 Python
Python基本语法经典教程
Mar 11 Python
深入理解Python中变量赋值的问题
Jan 12 Python
python中OrderedDict的使用方法详解
May 05 Python
老生常谈Python进阶之装饰器
May 11 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
python实现KNN分类算法
Oct 16 Python
Python unittest discover批量执行代码实例
Sep 08 Python
Python基于Opencv识别两张相似图片
Apr 25 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
document.compatMode介绍
2009/05/21 Javascript
Javascript事件热键兼容ie|firefox
2010/12/30 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
JavaScript 详解预编译原理
2017/01/22 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
node.js的exports、module.exports与ES6的export、export default深入详解
2017/10/26 Javascript
vue-cli3项目配置eslint代码规范的完整步骤
2020/09/10 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
Python list操作用法总结
2015/11/10 Python
Python连接phoenix的方法示例
2017/09/29 Python
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
python 快速把超大txt文件转存为csv的实例
2018/10/26 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
2020/02/17 Python
如何用python处理excel表格
2020/06/09 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
澳大利亚新奇小玩意网站:Yellow Octopus
2017/12/28 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
职工运动会邀请函
2014/02/02 职场文书
技能竞赛活动方案
2014/02/21 职场文书
自我鉴定标准格式
2014/03/19 职场文书
省级优秀毕业生主要事迹
2014/05/29 职场文书
安全标语口号
2014/06/09 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
创业计划书之家政服务
2019/09/18 职场文书
Python离线安装openpyxl模块的步骤
2021/03/30 Python
详解前端任务构建利器Gulp.js使用指南
2021/04/30 Javascript
pytorch 如何把图像数据集进行划分成train,test和val
2021/05/31 Python