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编写检测数据库SA用户的方法
Jul 11 Python
python快速查找算法应用实例
Sep 26 Python
Python递归遍历列表及输出的实现方法
May 19 Python
python登录豆瓣并发帖的方法
Jul 08 Python
python通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
python配置grpc环境
Jan 01 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
Sep 11 Python
python日志模块logbook使用方法
Sep 19 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
基于Python的Jenkins的二次开发操作
May 12 Python
TensorFlow固化模型的实现操作
May 26 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
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
php 文件状态缓存带来的问题
2008/12/14 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
laravel 如何实现引入自己的函数或类库
2019/10/15 PHP
javaScript - 如何引入js代码
2021/03/09 Javascript
Jquery cookie操作代码
2010/03/14 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
js this函数调用无需再次抓获id,name或标签名
2014/03/03 Javascript
一个支持任意尺寸的图片上下左右滑动效果
2014/08/24 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
python 实现堆排序算法代码
2012/06/05 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
2020/01/13 Python
keras输出预测值和真实值方式
2020/06/27 Python
python实现简单遗传算法
2020/09/18 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
应届生体育教师自荐信
2013/10/03 职场文书
财产公证书格式
2014/04/10 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
2014年组织委员工作总结
2014/12/01 职场文书
教师党员自我评价2015
2015/03/04 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
golang中的空接口使用详解
2021/03/30 Python