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 相关文章推荐
Python3.x对JSON的一些操作示例
Sep 01 Python
python通过tcp发送xml报文的方法
Dec 28 Python
基于python的Paxos算法实现
Jul 03 Python
Python 3 实现定义跨模块的全局变量和使用教程
Jul 07 Python
python实现kNN算法识别手写体数字的示例代码
Aug 16 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
详解Python 循环嵌套
Jul 09 Python
详解python字符串驻留技术
May 21 Python
pytorch 实现多个Dataloader同时训练
May 29 Python
使用python求解迷宫问题的三种实现方法
Mar 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
二十行语句实现从Excel到mysql的转化
2006/10/09 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
js网页实时倒计时精确到秒级
2014/02/10 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
js实现类似jquery里animate动画效果的方法
2015/04/10 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
js判断是否是手机页面
2017/03/17 Javascript
bootstrap paginator分页前后台用法示例
2017/06/17 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
python中引用与复制用法实例分析
2015/06/04 Python
Python实现简易Web爬虫详解
2018/01/03 Python
Python hashlib常见摘要算法详解
2020/01/13 Python
为什么说python更适合树莓派编程
2020/07/20 Python
HTML5 video 事件应用示例
2014/09/11 HTML / CSS
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
现代化办公人员工作的自我评价
2013/10/16 职场文书
《美丽的黄昏》教学反思
2014/02/28 职场文书
在校大学生的职业生涯规划书
2014/03/14 职场文书
竞选班干部演讲稿
2014/04/24 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
小学班长竞选稿
2015/11/20 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书